Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF:有条件地呈现列表项(<;li>;)_Java_Jsf_Rendering - Fatal编程技术网

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

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>

我刚刚继承了一个用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>
  • 注册
最终看起来像:


是否有一个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>