web-dev-qa-db-ja.com

IDとしてJSTL forEachループのvarStatusを使用します

JSTL forEachループのカウントを使用したいのですが、コードが機能しないようです。

<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount}">
    </div>
</c:forEach>

生産する

<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >
98
Mark W

varStatusによって設定される変数は、intではなく LoopTagStatus オブジェクトです。つかいます:

<div id="divIDNo${theCount.index}">

明確にするために:

  • begin属性を設定していない限り、${theCount.index}0からカウントを開始します
  • ${theCount.count}1でカウントを開始します
251

次のいずれかを使用します。

JSTL c:forEach varStatusプロパティ

プロパティゲッターの説明

  • current getCurrent()現在の反復のアイテム(コレクションから)。

  • index getIndex()現在の反復のゼロベースのインデックス。

  • count getCount()現在の反復ラウンドの1ベースのカウント

  • first isFirst()現在のラウンドが反復の最初のパスであるかどうかを示すフラグ
  • last isLast()現在のラウンドが反復の最後のパスであるかどうかを示すフラグ

  • begin getBegin()begin属性の値

  • end getEnd()終了属性の値

  • step getStep()ステップ属性の値

5

これを試すことができます。同様の結果

 <c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount.count}"></div>
 </c:forEach>
3
Nathanphan

以下のコードのshowDetailItemのIDを動的に生成するのに本当に役立ちました。

<af:forEach id="fe1" items="#{viewScope.bean.tranTypeList}" var="ttf" varStatus="ttfVs" > 
<af:showDetailItem  id ="divIDNo${ttfVs.count}" text="#{ttf.trandef}"......>

この行を実行すると、<af:outputText value="#{ttfVs}"/>は以下を出力します:

{index = 3、count = 4、last = false、first = false、end = 8、step = 1、begin = 0}

1
jyoti pani