用于将带有HTML代码的String注入和解释为JSF页面的组件

我'm using PrimeFaces with JSF 2.0 to build one application. I' m使用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代码 .

回答(1)

2 years ago

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

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

这样,HTML将不会被转义,因此将由webbrowser解释 .


Unrelated 具体问题,谨防XSS攻击,因为你在这里基本上重新显示未转义的用户控制输入 . 您可能希望事先对其进行消毒 .