jsf 2.0读取<ul>标签为字符串“<ul>”</ul> </ul>

时间:2012-06-25 02:59:21

标签: jsf

我希望在某些情况下将ul标签添加到我的jsf中。我的代码如:

<c:if test="${level ne 1}" >&lt;ul&gt;</c:if>
<li>..</li>
<li>..</li>
<li>..</li>
<c:if test="${level ne 1}" >&lt;/ul&gt;</c:if>

当我使用jsf 1.2时,效果很好。但是在我改为jsf 2.0之后,它就像是

 "<ul>"
 <li>..</li>
 <li>..</li>
 <li>..</li>
 "</ul>"

我该如何解决?非常感谢!!

1 个答案:

答案 0 :(得分:2)

你似乎也已经取代了Facelets的遗留JSP(做得好!)。此行为特定于Facelets。它隐含地将所有模板文本HTML转义为内置XSS攻击防范的一部分。

改为使用<h:outputText escape="false">

<c:if test="${level ne 1}"><h:outputText value="&lt;ul&gt;" escape="false" /></c:if>
<li>..</li>
<li>..</li>
<li>..</li>
<c:if test="${level ne 1}"><h:outputText value="&lt;/ul&gt;" escape="false" /></c:if>

顺便说一句,你最好使用它的rendered属性而不是那些丑陋的JSTL标记。

<h:outputText value="&lt;ul&gt;" escape="false" rendered="#{level ne 1}" />
<li>..</li>
<li>..</li>
<li>..</li>
<h:outputText value="&lt;/ul&gt;" escape="false" rendered="#{level ne 1}" />

无关具体问题,对于具体的功能要求,您可能会发现OmniFaces <o:tree> component有用。