html - 将带有 HTML 代码的字符串注入(inject)并解释为 JSF 页面的组件

标签 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 代码显示为纯文本:

<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/

相关文章:

javascript - React,在包含相同组件的路由之间导航时处理获取的最佳方法

css - 从 css 通过 id 访问 JSF 元素

jsf-2 - 未使用字符串以外的对象调用 Primefaces selectOneMenu 监听器

tomcat - 如何使 Tomcat 8 Web 应用程序上的现有 JSF2 成为 OpenID Connect SSO 服务器的客户端

css - 将 css 添加到 Java Server Faces (JSF)

php - 如何使用 PHP 将数据库数据返回到现有 HTML 页面?

html - Angular 处理条件驱动形式

jsf - Primefaces cellEditor 在 ajax 提交中传递整个数据表

javascript - knockout 从输入到函数的发送值

jsf - selectonemenu jsf 在带有转换器的对象上