2

オブジェクト値のリストがあります。各オブジェクト値のフィールドの 1 つは、「表示可能」という名前のブール値です。

ここに私のコードがあります:

<% int z = 1 %>
<c:forEach var="value" items="${valueList}" varStatus="status">
    <% String className = (z % 2 == 1) ? "Odd" : ""; %>
    <li class="<%= className %>">
        <c:if test="${value.displayable}"> 
            /* there are ten items in that list
            8 of the value.displayable are true
            2 are false */

            <a href=""> title </a>
            <a href=""> link </a>
        </c:if>
    </li>
    <% ++z; %>
</c:forEach>

そのループから、私は正しいアイテムだけを取得する必要がありますか? どういうわけか私は10個すべてのアイテムを手に入れています。

4

2 に答える 2

3

それらのアイテムのうちの 2 つにdisplayable == false. この場合、10 項目のリストを取得していると仮定し<li></li>ますが、そのうちの 2 項目には「タイトル」と「リンク」のリンクが含まれていません。

これは、現在のアイテムが表示可能かどうかに関係なく、<li></li>タグをレンダリングしている (および css クラスを切り替えてカウンターをインクリメントしている)zためです。そのループのすべてのコンテンツ(スクリプトレットと) を の中に入れて、アイテム表示可能な場合にのみリスト アイテムを表示するようにします。for<li></li><c:if>

于 2012-08-14T14:51:24.337 に答える
1

このようにコードを書き換えることができます

    <c:forEach var="value" items="${valueList}" varStatus="status">
        <c:if test="${value.displayable}"> 
          <c:if test="${status.index%2==0 }">   
             <li>
                <a href=""> title </a>
                <a href=""> link </a>
            </li>
          </c:if>
          <c:if test="${status.index%2!=0 }">   
             <li class="Odd">
                <a href=""> title </a>
                <a href=""> link </a>
            </li>
         </c:if>
     </c:if>     
 </c:forEach>
于 2012-08-14T15:14:48.037 に答える