我有以下代码:
<h:outputText value="#{bean.shortDescription}" escape="false" />
结果是:
<p><b>Location. </b> <br /> a
来自#{bean.shortDescription}的字符串来自转义的XML响应:
<p><b>Location. </b> <br /> a
如果我使用与上面相同的输出文本,但是我没有从XML中获取响应,而是将响应中的转义字符串放入,例如:
<h:outputText value="<p><b>Location. </b> <br /> a" escape="false" />
然后结果是:
Location.
a
这是因为你的文字已被转义. escape =“false”不会取消文本.它只是按原样打印文本而不是转义它.但是,由于您的文字已从头开始转义,因此它以转义形式显示.删除escape =“false”,你会看到它将被双重转义.即每一个&成为& amp;
你需要事先解开它. Apache Commons Lang StringEscapeUtils可能会派上用场.
String unescapedShortDescription = StringEscapeUtils.unescapeXml(shortDescription);
然后,您可以使用< h:outputText escape =“false”>按原样打印.