我希望在某些情况下将ul标签添加到我的jsf中。我的代码如:
<c:if test="${level ne 1}" ><ul></c:if>
<li>..</li>
<li>..</li>
<li>..</li>
<c:if test="${level ne 1}" ></ul></c:if>
当我使用jsf 1.2时,效果很好。但是在我改为jsf 2.0之后,它就像是
"<ul>"
<li>..</li>
<li>..</li>
<li>..</li>
"</ul>"
我该如何解决?非常感谢!!
答案 0 :(得分:2)
你似乎也已经取代了Facelets的遗留JSP(做得好!)。此行为特定于Facelets。它隐含地将所有模板文本HTML转义为内置XSS攻击防范的一部分。
改为使用<h:outputText escape="false">
。
<c:if test="${level ne 1}"><h:outputText value="<ul>" escape="false" /></c:if>
<li>..</li>
<li>..</li>
<li>..</li>
<c:if test="${level ne 1}"><h:outputText value="</ul>" escape="false" /></c:if>
顺便说一句,你最好使用它的rendered
属性而不是那些丑陋的JSTL标记。
<h:outputText value="<ul>" escape="false" rendered="#{level ne 1}" />
<li>..</li>
<li>..</li>
<li>..</li>
<h:outputText value="</ul>" escape="false" rendered="#{level ne 1}" />
无关具体问题,对于具体的功能要求,您可能会发现OmniFaces <o:tree>
component有用。