使用HTML代码将string注入和解释到JSF页面的组件

我使用PrimeFaces和JSF 2.0来构build一个应用程序。 我正在使用PrimeFaces <p:editor>组件来使用户能够创build富文本。 但是这个组件的输出是这样的HTML源代码:

 String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>"; 

当我在<h:outputText>显示如下:

 <h:outputText value="#{bean.text}" /> 

然后以纯文本forms显示HTML代码:

<p>这个文本<i>包含</ b>一些<b> HTML </ b>代码。</ p>

是否有任何可以解释HTML源代码的组件,例如<i>实际上以斜体显示, <b>为粗体?

这个文本包含一些HTML代码。

JSF默认从backing bean属性转义HTML,以防止XSS攻击漏洞。 要禁用此function,只需将<h:outputText>escape属性设置为false

 <h:outputText ... escape="false" /> 

这样HTML将不会被转义,因此将被网页浏览器解释。


具体问题无关 ,请注意XSS攻击,因为您在这里基本上是重新显示用户控制的input。 您可能需要事先进行消毒。

  • XSS背后的一般概念是什么?
  • JSF中的CSRF,XSS和SQL注入攻击防护
  • JSF的服务器端的HTML清理器/清理
  • 在h:outputText中转义一切,但换行符