JSTL, ускользающий от специальных символов
У меня есть эта странная проблема со специальными символами.
В JSP я использую имя поля как id, и имя может быть как-то вроде
id="<1 and &>2" (OR)
id="aaa & bbb"
У меня нет другого варианта использования идентификатора, отличного от имен, что единственное, что я получаю от бэкэнд.
Итак, есть ли какая-либо логика для удаления всех специальных символов с помощью JSTL.
В настоящем сценарии, в JS, я сделаю некоторые операции с идентификатором. это вызывает множество проблем для каждого типа браузера.
Пожалуйста, предложите, спасибо заранее...
Ответы
Ответ 1
JSTL предоставляет два способа ускорения специальных символов HTML:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/>
и
${fn:escapeXml(myName)}
Оба преобразуют специальные символы в соответствующие HTML-объекты: (<
становится <
, &
становится &
...).
Обратите внимание, что идентификаторы должны быть закодированы в HTML, но не в JavaScript.
Ответ 2
Я думаю, что ваш вопрос был неправильно истолкован.
Я пришел к тому же вопросу, что и вы, и решил проблему с помощью excapeXml = "false".
<c:out value="${id}" escapeXml="false"/>
У меня были данные в базе данных:
& lt; Hello World >
и escapeXml = "false" сделал отображение
<Hello World>
Ответ 3
Я думаю, что это то, что вы lokking для
Используйте Spring HtmlUtils.htmlEscape(ввод строки).
Ответ 4
Я просто столкнулся с сценарием, где мне пришлось сбежать ", т.е." Отдельная цитата ", кроме других специальных символов. В этом случае fn: escapeXml не удалось. Поэтому я использовал JavaScriptUtils.javaScriptEscape() API Spring, создал тег и применил. Теперь проблема решена. Я также указал URL-адрес: http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters.