JSF:有条件地呈现列表项 (<li>)

2022-09-03 03:25:21

我刚刚继承了一个在JSF中实现的项目。我有以下代码,在Chrome中看起来很好,但是Firefox在“空”列表项上呈现边框:

<ul>
    <li><a href="/home">Home</li>
    <li>
        <s:link view="/signup.xhtml" rendered="#{someCondition}">Sign Up</s:link>
    </li>
    <!-- etc... -->
</ul>

最终看起来像这样:

enter image description here

是否有 JSF 标记来有条件地呈现 ?<li>


答案 1

如果您像@CoolBeans示例中那样执行此操作,则<li>周围将得到<跨度>。在某些情况下,它可能会破坏您的布局,此外,您并不真正想要在<ul>下添加额外的标签。要摆脱它,请在项目周围使用,而不是<h:panelGroup>。<ui:fragment rendered="#{condition}" />

您还可以使用样式属性来隐藏项目:

<li style="display: #{condition ? 'list-item' : 'none'};" />

答案 2

不,是 vanilla html,不是 jsf 组件。li

您可以通过在元素周围放置一个并在其上设置属性来破解它。<h:panelGroup />lirendered

即。

 <h:panelGroup rendered="#{someCondition}">
   <li>
      <s:link view="/signup.xhtml">Sign Up</s:link>
   </li>
 </h:panelGroup>

另一种选择是使用 ,但请记住,它在 JSF 2.0 中已被弃用。<f:verbatim rendered="#{someCondition}" >


推荐