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

时间:2011-08-10 17:09:22

标签: java jstl

我在JSTL中有一个变量,并希望用

替换所有逗号
<c:set var="colTxt" value="${fn:replace(colTxt,',','<br />')}" />

然而,这显示错误:

  

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

我该怎么办?

1 个答案:

答案 0 :(得分:4)

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

使用<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>