我在JSTL中有一个变量,并希望用
替换所有逗号<c:set var="colTxt" value="${fn:replace(colTxt,',','<br />')}" />
然而,这显示错误:
与元素类型“c:set”关联的属性“value”的值不得包含“&lt;”字符
我该怎么办?
答案 0 :(得分:4)
使用<
和>
代替<
和>
。
使用<c:out>
进行打印时,请确保添加escapeXml="false"
,否则您会看到<br />
字面上显示为原样,而不是被解析为真正的HTML换行符。< / p>
但是,当${colTxt}
包含用户控制的输入时,禁用XML转义可能会产生XSS漏洞。您可能希望以不同方式解决问题,例如
<c:forEach items="${fn:split(colTxt, ',')}" var="item">
<c:out value="${item}" /><br />
</c:forEach>