我正在将PrimeFaces与JSF 2.0一起构建一个应用程序。我正在使用PrimeFaces <p:editor>组件使用户能够创建富文本。但是此组件的输出是HTML源,如下所示:
<p:editor>
String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>";
当我在<h:outputText>下面显示此内容时:
<h:outputText>
<h:outputText value="#{bean.text}" />
然后将HTML代码显示为纯文本:
此文本包含 i>一些 HTML b>代码。 p>
是否有任何组件可以解释HTML源代码,以便例如<i>将其实际显示为斜体和<b>粗体?
<i>
<b>
此文本 包含 一些 HTML 代码。
默认情况下,JSF会从支持bean的属性中转义HTML,以防止XSS攻击漏洞。要禁用此功能,只需将的escape属性设置<h:outputText>为false。
escape
false
<h:outputText ... escape="false" />
这样,HTML将不会被转义,因此将由网络浏览器解释。
与 具体问题 无关 ,请当心XSS攻击,因为您基本上是在重新显示未转义的用户控制输入。您可能需要事先对其进行消毒。