Подтвердить что ты не робот

JSTL, ускользающий от специальных символов

У меня есть эта странная проблема со специальными символами. В JSP я использую имя поля как id, и имя может быть как-то вроде

id="<1 and &>2" (OR)
id="aaa & bbb"

У меня нет другого варианта использования идентификатора, отличного от имен, что единственное, что я получаю от бэкэнд.

Итак, есть ли какая-либо логика для удаления всех специальных символов с помощью JSTL. В настоящем сценарии, в JS, я сделаю некоторые операции с идентификатором. это вызывает множество проблем для каждого типа браузера.

Пожалуйста, предложите, спасибо заранее...

4b9b3361

Ответ 1

JSTL предоставляет два способа ускорения специальных символов HTML:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/> 

и

${fn:escapeXml(myName)}

Оба преобразуют специальные символы в соответствующие HTML-объекты: (< становится &lt;, & становится &amp;...).

Обратите внимание, что идентификаторы должны быть закодированы в HTML, но не в JavaScript.

Ответ 2

Я думаю, что ваш вопрос был неправильно истолкован. Я пришел к тому же вопросу, что и вы, и решил проблему с помощью excapeXml = "false".

<c:out value="${id}" escapeXml="false"/> 

У меня были данные в базе данных:

& lt; Hello World >

и escapeXml = "false" сделал отображение

<Hello World>

Ответ 4

Я просто столкнулся с сценарием, где мне пришлось сбежать ", т.е." Отдельная цитата ", кроме других специальных символов. В этом случае fn: escapeXml не удалось. Поэтому я использовал JavaScriptUtils.javaScriptEscape() API Spring, создал тег и применил. Теперь проблема решена. Я также указал URL-адрес: http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters.