Функция JSTL для замены символов кавычек внутри строки - PullRequest
10 голосов
/ 17 января 2012

Какой самый простой способ заменить символы кавычек на \ "последовательность внутри строковых значений?

Ответы [ 2 ]

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

Это будет функция fn:replace().

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
${fn:replace(foo, '"', '\\"')}

Не имеет отношения к конкретному вопросу, это часто повторяющееся требование вчтобы предотвратить искажение HTML при повторном отображении контролируемого пользователем ввода в качестве атрибута HTML. Обычно , вы должны использовать вместо этого <c:out> или fn:escapeXml().Например,

<input name="foo" value="<c:out value="${param.foo}" />" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />

Он учитывает не только кавычки, но и все другие специальные символы XML, такие как <, >, & и т. Д.

См. Также:

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

Использовать javascript replace (с помощью / g для замены всех вхождений)

string.replace(/"/g, '\\"')
...