JSTL 用 HTML 标签替换变量中的字符

Hed*_*dge 3 java jstl

我在 JSTL 中有一个变量,想用

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

然而,这显示了错误:

与元素类型“c:set”关联的属性“value”的值不得包含“<”字符

我该怎么办?

Bal*_*usC 5

使用&lt;and&gt;代替<and >

使用 打印时<c:out>,请确保添加了escapeXml="false",否则您会看到<br />字面上按原样显示,而不是被解析为真正的 HTML 换行符。

但是,当${colTxt}包含用户控制的输入时,禁用 XML 转义可能会造成 XSS 漏洞。您可能想以不同的方式解决问题,例如

<c:forEach items="${fn:split(colTxt, ',')}" var="item">
    <c:out value="${item}" /><br />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)