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


104

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" >

9
ここではクラスのJavadocは次のとおりです。download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/...のそれが提供するどのようなgetterメソッドを見てください。はい、他にもありますgetIndex():)
BalusC

回答:


259

設定された変数がvarStatusあるLoopTagStatusオブジェクトではなく、int型。使用する:

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

明確にするために:

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

21
${theCount.count} 常に 1 ${theCount.index}から始まりbeginます。属性を設定したものから始まります。例<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me 2013

8

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

JSTL c:forEach varStatusプロパティ

プロパティゲッター説明

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

  • index getIndex()現在の反復ラウンドのゼロから始まるインデックス。

  • count getCount()現在の反復ラウンドの1から始まるカウント

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

  • begin getBegin()begin属性の値

  • end getEnd()end属性の値

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


4

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

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

1

これ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}


@HenryKeiterここに本当の答えがあります。悪いフォーマットは、私が修正するまで、すべてのhtmlを隠していただけです。
ダンはFirelightによって2014

これは、3年前にすでに提供されたものとまったく同じ回答を提供し(を使用varStatus.count)、可読性が大幅に低下します。なぜ他の人の答えを読むのを邪魔するのですか?;)
rustyx 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.