17

我正在使用带有 JSF 2.0 的 PrimeFaces 来构建一个应用程序。我正在使用 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 代码显示为纯文本:

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

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

此文本包含一些HTML代码。

4

1 回答 1

35

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

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

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


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

于 2012-09-30T17:05:26.233 回答