1

在某些情况下,我希望将 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>"

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

4

1 回答 1

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>组件很有用。

于 2012-06-25T03:03:20.323 回答