经过一些谷歌搜索后,我发现JSF通常会在显示期间通过任何组件清理所有用户输入,默认情况下,我看到的最佳选项是通过h:outputText
显示用户输入并显式禁用转义,如下所示:
<h:outputText value="#{bean.userInput}" escape="false" />
但是这需要我自己清理输入,然后手动用<br />
标签替换换行符并希望它是稳定和安全的(例如,如果doctype从XHTML切换到HTML5怎么办?我必须手动在我的代码等中将<br />
更改为<br>
。为了卫生,我正在考虑使用Apache Commons辅助函数StringEscapeUtils.escapeHtml()
:
myBean.setUserInput(StringEscapeUtils.escapeHtml(userInput)
.replaceAll("(\r\n|\r|\n|\n\r)", "<br />"));
..但这让我有了另一种依赖,编写自己的HTML转义函数可能只是打开Pandora的输出框..
那么有一个“最佳实践”干净而可靠的JSF方式来实现这个看似简单和常见的用例吗?
(如果有帮助,我也已经在使用RichFaces了)
编辑:明显的重复不是一个,因为它还引入了另一个依赖项并忽略了我的核心问题:是否有办法保留换行符而不进行自己的转义而不替换换行符首先用文字<br />
标记我自己。只是保留换行符。
编辑2 :问题中的链接充分回答了问题。