我有以下代码:
<h:outputText value="#{bean.shortDescription}" escape="false" />
结果是:
<p> <b>位置 . </ b>
a
来自 #{bean.shortDescription}
的字符串来自转义的XML响应:
<p><b>Location. </b> <br /> a
如果我使用与上面相同的输出文本,但是我没有从XML中获取响应,而是将响应中的转义字符串放入,例如:
<h:outputText value="<p><b>Location. </b> <br /> a" escape="false" />
然后结果是:
位置 . 一个
如何正确呈现从XML中获取的HTML标记?我不想逃避他们 .
1 回答
这是因为你的文字是 already 转义的 .
escape="false"
不会取消文本 . 它只是按原样打印文本而不是转义它 . 但是,由于您的文本已从开头转义,因此它以转义形式显示 . 删除escape="false"
,您将看到它将被双重转义 . 即每&
变成&
.你需要事先取消它 . Apache Commons Lang
StringEscapeUtils
可能会派上用场 .然后,您可以使用
<h:outputText escape="false">
按原样打印 .