我正在使用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代码显示为纯文本:
&lt; p&gt;该文本&lt; i&gt;包含&lt; / i&gt;一些&lt; b&gt; HTML&lt; / b&gt; 。代码&LT; / p为H.
是否有任何组件可以解释HTML源代码,例如<i>
实际上显示为斜体,<b>
显示为粗体?
此文本包含一些 HTML 代码。
答案 0 :(得分:26)
默认情况下,JSF从支持bean属性中转义HTML以防止XSS攻击漏洞。要禁用此功能,只需将escape
的{{1}}属性设置为<h:outputText>
。
false
这样,HTML就不会被转义,因此会被webbrowser解释。
无关具体问题,谨防XSS攻击,因为你在这里基本上重新显示未转义的用户控制输入。您可能希望事先对其进行消毒。