Java JSF:有条件地呈现列表项(<;li>;)
我刚刚继承了一个用JSF实现的项目。我有以下代码,在Chrome中看起来不错,但Firefox会在“空”列表项上呈现边框:Java JSF:有条件地呈现列表项(<;li>;),java,jsf,rendering,Java,Jsf,Rendering,我刚刚继承了一个用JSF实现的项目。我有以下代码,在Chrome中看起来不错,但Firefox会在“空”列表项上呈现边框: <ul> <li><a href="/home">Home</li> <li> <s:link view="/signup.xhtml" rendered="#{someCondition}">Sign Up</s:link> </li>
<ul>
<li><a href="/home">Home</li>
<li>
<s:link view="/signup.xhtml" rendered="#{someCondition}">Sign Up</s:link>
</li>
<!-- etc... -->
</ul>
- 家
-
注册
最终看起来像:
是否有一个JSF标记来有条件地呈现
?否li
是普通的html,而不是JSF组件
您可以通过在li
元素周围放置
并在其上设置rendered
属性来破解它
即
注册
另一种选择是使用
,但请记住,它在JSF2.0中已被弃用。如果您像@CoolBeans示例中那样做,您将得到一个关于的建议。在某些情况下,它可能会破坏您的布局,此外,您实际上不希望在下有额外的标记。要摆脱它,请在物品周围使用
,而不要使用
还可以使用“样式”属性隐藏项目:
<li style="display: #{condition ? 'list-item' : 'none'};" />
您还可以使用核心JSTL库:
<c:if test="#{someCondition}">
<li>
<s:link view="/signup.xhtml">Sign Up</s:link>
</li>
</c:if>
注册
我认为使用这个核心标记比使用panelGroup标记更容易理解代码。我使用的是jsf 1.2,渲染时没有额外的跨度。如果指定样式、样式类或布局属性,则只能获得div或span。
<c:if test="#{someCondition}">
<li>
<s:link view="/signup.xhtml">Sign Up</s:link>
</li>
</c:if>