【发布时间】:2013-12-30 21:14:39
【问题描述】:
我有用户在文本区域中输入的文本,我想在另一个页面上显示它。
第一个问题是来自 textarea 的换行符是 \r\n 而不是 br,但我可以简单地将它们全部替换。我需要帮助的实际问题是在那之后显示它:
h:outputText 默认情况下会转义所有内容,因此要使换行符起作用,我需要使用 escape="false",但出于显而易见的原因,我不希望用户能够通过输入其他内容来弄乱页面HTML 标签,甚至更糟糕的是,Javascript。所以我需要以某种方式逃避除换行符之外的一切。
我应该怎么做?或者是否有一个不同的 JSF 组件可以让这更简单?
不幸的是,前置标签或 CSS 空白不是一个选项。
【问题讨论】:
-
尝试使用可能解决您问题的正则表达式
-
@Noman:从不建议使用正则表达式来解析 HTML,更不用说清理来自攻击向量的输入了。这简直是愚蠢的。使用普通的基于堆栈的解析器并仅将正则表达式用于其设计的工作:常规语言模式匹配。 HTML 不是常规语言。
-
@BalusC 谢谢,我会记住的 :)