$ {book.description}变量包含带有" \ n"的文本。字符incide,所以我将其替换为html标记以保留jsp输出中的新行(new paragrapf行)。 但在这种情况下,存在执行XSS代码的危险。有没有办法使用c:out jsp tag和preserv new line in text?如果我使用c:out输出那么所有< br />替换为& LT; br /& GT;而且没有新线。
<c:set var="newline" value="<%= \"\n\" %>" />
<p>${fn:replace(book.description, newline, "<br />")}</p>
答案 0 :(得分:0)
您可能对JSTL Functions的其他功能感兴趣。
查看转义字符串中XML字符的${fn:escapeXml(text)}
。这是Sample。
看看
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />
上的更多教程
解决方案1
<c:set var="newline" value="\n" />
<c:set var="text" value="abc\nlmn\nxyz" />
${ fn:replace(text, newline,'</br>')}
解决方案2
<c:set var="newline" value="\n" />
<c:set var="text" value="abc\nlmn\nxyz" />
<c:out value="${ fn:replace(text, newline,'</br>')}" escapeXml="false"/>
输出:
abc
lmn
xyz