我从文本区域获取值并将它们存储在数据库中以供稍后显示.当前场景是字符串在db中以"\n"存储.在显示之前,我将所有\n字符替换为
使用replaceAll方法.但问题是当我显示它时,<和>字符转换为<和>.
解决这个问题的正确方法应该是什么?
comment.replaceAll("\n", "<br>")
Run Code Online (Sandbox Code Playgroud)
您需要在显示期间禁用转义.目前还不清楚你正在使用哪种视图技术和/或taglib,但这对于JSTL <c:out>和JSF来说是典型的<h:outputText>.默认情况下,它们都会转义预定义的HTML/XML entites,但是有一个额外的属性来禁用转义.
JSTL:
<c:out value="${bean.text}" escapeXml="false" />
Run Code Online (Sandbox Code Playgroud)
JSF:
<h:outputText value="#{bean.text}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
但是,对于这些文本是用户控制输入的情况,请记住XSS 攻击.您可能希望在借助例如Jsoup保存DB之前清除它.
顺便说一下,replaceAll()您也可以使用CSS white-space: pre;来按原样显示换行符.
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |