我正在试图找出如何最优雅地将PHP的nl2br()函数集成到使用JSF2 / Spring完成的当前项目中。我可以在我的模型类中使用return text.replaceAll("\n","<br/>");
之类的东西轻松创建getter,但这看起来好像将视图相关的代码放在它不属于的地方。关于在我的数据库中存储实际的html内容,我有同样的感觉。
我想最干净的解决方案就是使用标签/ EL,但我找不到那些似乎只做的事情。你们怎么会实现这样的东西?提前感谢您,任何提示都非常感谢!
答案 0 :(得分:1)
嗯,首先,JSF是一个Web UI框架。因此,您希望输出给用户的任何内容都将以HTML结尾(但只有javascript除外)。所以,我发现它并没有严重违反MVC(如果有的话)。也许你甚至可以推动信封直接在文本中使用<br/>
,而不是替换\n
从更一般的意义上讲,如果文本中有不同的行/段落,那么灵活/标准的解决方案就会破坏不同元素中的文本,并让您的表示逻辑处理它。所以,而不是具有
的属性 presentationPage.introductionText=Ipse Lorum ...sum.\nVini vidi vinci.
你会以
结束 presentationPage.introductionText.par1=Ipse Lorum ...sum.
presentationPage.introductionText.par2=vini vidi vinci.
答案 1 :(得分:1)
使用CSS,假设文本不包含任何HTML
<div style="white-space: pre">#{bean.text}</div>
或create a custom EL function然后显示未转义(Facelets隐式转义HTML)
<div><h:outputText value="#{my:nl2br(bean.text)}" escape="false" /></div>
你应该完全确定它是free of XSS。