JSTL заменить символ в переменной HTML-тегом - PullRequest
3 голосов
/ 10 августа 2011

Я получил переменную в JSTL и хотел бы заменить все запятые на

<c:set var="colTxt" value="${fn:replace(colTxt,',','<br />')}" />

Это, однако, показывает ошибку:

Значение атрибута 'value', связанного с типом элемента "c: set", не должно содержать символ "<" </p>

Что я могу с этим сделать?

1 Ответ

4 голосов
/ 10 августа 2011

Используйте &lt; и &gt; вместо < и >.

При печати с использованием <c:out> убедитесь, что вы добавили escapeXml="false", иначе вы увидите <br /> буквально показывает как есть, а не анализируется как реальный разрыв строки HTML.

Однако, когда ${colTxt} содержит ввод, управляемый пользователем, отключение экранирования XML может потенциально создать дыру в XSS.Вы можете решить проблему по-другому, например,

<c:forEach items="${fn:split(colTxt, ',')}" var="item">
    <c:out value="${item}" /><br />
</c:forEach>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...