0

我试图弄清楚如何最优雅地将 PHP 的 nl2br() 函数之类的东西集成到使用 JSF2/Spring 完成的当前项目中。我可以很容易地在我的模型类中使用类似的东西来创建吸气剂return text.replaceAll("\n","<br/>");,但这看起来确实像是将与视图相关的代码放在它不属于的地方。我对在我的数据库中存储实际的 html 内容有同样的感觉。我想最干净的解决方案是为此使用标签/EL,但是我找不到似乎可以做到这一点的东西。你们将如何实施这样的事情?提前感谢您,任何提示都非常感谢!

4

2 回答 2

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.
于 2012-11-23T09:05:18.787 回答
1

使用任一 CSS,假设文本不包含任何 HTML

<div style="white-space: pre">#{bean.text}</div>

或者创建一个自定义 EL 函数,然后将其显示为非转义(Facelets 隐式转义 HTML)

<div><h:outputText value="#{my:nl2br(bean.text)}" escape="false" /></div>

您只应绝对确保它没有 XSS

于 2012-11-23T12:16:13.547 回答