我有文本,用户在textarea中输入,我想在另一页上显示它 .
第一个问题是来自textarea的换行符是\ r \ n而不是br,但我可以简单地替换所有换行符 . 我需要帮助的实际问题是在此之后显示:
h:默认情况下,outputText会转义所有内容,因此要使换行符正常工作,我需要执行escape =“false”,但由于显而易见的原因,我不希望用户通过输入其他HTML标记来弄乱页面或更糟糕的是,Javascript . 所以我需要以某种方式逃避除了线路之外的一切 .
我该怎么做?或者是否有一个不同的JSF组件可以使这更简单?
不幸的是,前标签或CSS白色空间不是一种选择 .
1 回答
您也可以只显示预先格式化的文本,以便
\n
显示为真正的换行符,而不是将<br>
替换为<br>
并使用<h:outputText escape="false">
. 你可以使用元素的CSS white-space property,可以设置为pre
,pre-wrap
或pre-line
.例如 .
同
如果您真的打算将文本显示为未转义的HTML,那么您可以通过使用能够执行该作业的HTML解析器(例如Jsoup)来消除XSS攻击向量 . 另见我昨天发布的这个答案:JSF OutputText with html style .