Как использовать одинарные и двойные кавычки в выражении JSTL / EL? - PullRequest
4 голосов
/ 17 января 2012

Я хочу вызвать fn: заменить внутри EL внутри c: out, чтобы заменить символы кавычек.

Следующее не работает

<c:out value="${fn:replace(userName,'"','\\"')}"/>

, потому что анализатор XML останавливается при первой двойной кавычке ине видит завершения тега c: cout (ошибка этапа компиляции JSP).

Следующее

<c:out value="${fn:replace(userName,'&quot;','\\&quot;')}"/>

не работает, возможно, потому что функция замены не видит фактический символ кавычки.

1 Ответ

5 голосов
/ 17 января 2012

Параметризовать их с помощью <c:set>.

<c:set var="search" value='"' />
<c:set var="replace" value='\\"' />
<c:out value="${fn:replace(userName, search, replace)}"/>

Не связанных с конкретным вопросом, вы все еще не рассматривали настоящий генератор JSON?Например, для Gson речь идет о следующем oneliner, учитывая, что user является полноценным Javabean:

String json = new Gson().toJson(user);

Вы получите синтаксически правильный JSON напрямую, не пытаясь найти все способы получить JSP / JSTL / ELсоздать действительный JSON.

...