用于将带有HTML代码的String注入和解释到JSF页面的组件

时间:2012-09-30 16:22:37

标签: html jsf jsf-2 primefaces escaping

我正在使用PrimeFaces和JSF 2.0来构建一个应用程序。我正在使用PrimeFaces <p:editor>组件来启用用户创建富文本。但是这个组件的输出是HTML源代码,如下所示:

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

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

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

然后它将HTML代码显示为纯文本:

  

&lt; p&gt;该文本&lt; i&gt;包含&lt; / i&gt;一些&lt; b&gt; HTML&lt; / b&gt; 。代码&LT; / p为H.

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

  

此文本包含一些 HTML 代码。

1 个答案:

答案 0 :(得分:26)

默认情况下,JSF从支持bean属性中转义HTML以防止XSS攻击漏洞。要禁用此功能,只需将escape的{​​{1}}属性设置为<h:outputText>

false

这样,HTML就不会被转义,因此会被webbrowser解释。


无关具体问题,谨防XSS攻击,因为你在这里基本上重新显示未转义的用户控制输入。您可能希望事先对其进行消毒。