我将 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 代码显示为纯文本:
<p>This text <i>contains</i> some <b>HTML</b> code.</p>
是否有任何组件可以解释 HTML 源代码,例如<i>
实际上显示为斜体和 <b>
大胆?
This text contains some HTML code.
最佳答案
默认情况下,JSF 从支持 bean 属性中转义 HTML,以防止 XSS 攻击漏洞。要禁用它,只需设置 escape
<h:outputText>
的属性至 false
.
<h:outputText ... escape="false" />
这样 HTML 就不会被转义,因此会被网络浏览器解释。
与具体问题无关,请注意 XSS 攻击,因为您在这里基本上是重新显示未转义的用户控制输入。您可能需要事先对其进行 sanitizer 。
关于html - 将带有 HTML 代码的字符串注入(inject)并解释为 JSF 页面的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662851/