web-dev-qa-db-ja.com

ループ付きインクリメントカウンター

この質問は私の以前の質問に関連しています:

Jspでオブジェクトリストを反復処理

Forループに0から始まるカウンターを挿入したいので、これまでにいくつかの組み合わせを試しました。

1。

<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">            
        <c:out value="${count}" />
    </c:forEach>
</c:forEach>

2。

<c:set var="count" value="0" scope="page" />
<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}'>      
   <%=count++%>  
<c:out value="${count}" />
    </c:forEach>
</c:forEach>

最初のアプローチの問題は、外側のループには3つのアイテムがあり、内側のループには7つのアイテムがあるため、各外側のアイテムのカウントは0から始まるということです。基本的に私が欲しいものは次のとおりです。

counter = 0;
outer for loop 
    inner for loop 
       counter++;
       //cout/echo/print counter value should start from 0
    end inner loop
end outer loop

私は構文に完全に精通していないだけです。ありがとうございました

62
London

以下を試してください:

<c:set var="count" value="0" scope="page" />

//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
166
dogbane

varStatusは、getIndex()メソッドを持つ LoopTagStatus への参照です。

そう:

<c:forEach var="tableEntity" items='${requestScope.tables}' varStatus="outer">
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="inner">            
        <c:out value="${(outer.index * fn:length(tableEntity.rows)) + inner.index}" />
    </c:forEach>
</c:forEach>

こちらもご覧ください:

39
BalusC

C:forEachループでvarStatusを使用できます

最初の例では、次のようにカウンターを適切に動作させることができます...

<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">            
        my count is ${count.count}
    </c:forEach>
</c:forEach>
3
Andy Brudtkuhl

このページにつながったのは、ページ内に設定してから、インクルードされたページの内側にインクリメントを行ったということです

そして、ここに問題があります

このような問題を解決するには、変数または増分を宣言するときにscope="request"を使用するだけです

//when you set the variale add scope="request"
<c:set var="nFilters" value="${0}" scope="request"/>
//the increment, it can be happened inside an included page
<c:set var="nFilters" value="${nFilters + 1}"  scope="request" />

これがあなたの時間を節約することを願っています

0