【问题标题】:Component to inject and interpret String with HTML code into JSF page将带有 HTML 代码的字符串注入和解释到 JSF 页面的组件
【发布时间】:2012-09-21 16:29:08
【问题描述】:

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

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

当我在&lt;h:outputText&gt; 中显示如下:

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

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

此文本包含一些HTML代码。

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

此文本包含一些HTML代码。

【问题讨论】:

    标签: html jsf jsf-2 primefaces escaping


    【解决方案1】:

    默认情况下,JSF 会从支持 bean 属性中转义 HTML,以防止 XSS 攻击漏洞。要禁用此功能,只需将&lt;h:outputText&gt;escape 属性设置为false

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

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


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

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 2013-04-07
      • 2012-03-21
      • 2014-07-29
      • 2011-11-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多