jstlのforeachループからインデックス値を取得する方法


106

request次のようにオブジェクトに値を設定しています。

String[] categoriesList=null;
categoriesList = engine.getCategoryNamesArray();
request.setAttribute("categoriesList", categoriesList );

これは私がjspページで繰り返す方法です

<% if(request.getAttribute("categoriesList") != null) { %>
<c:forEach var="categoryName" items="${categoriesList}">
   <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
</c:forEach>
<% }%>

各要素のインデックスを取得してJavaScript関数に渡すにはどうすればよいですかonclick="getCategoryIndex()"

回答:


234

varStatusを使用してインデックス c:forEach varStatusプロパティを取得します

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>

私はこのUncaught ReferenceError: ループが定義されていないことを理解し、あなたの努力のために+1します
Javaの質問

表示された要素のonClick
Javaの質問

varStatus値には、ループ反復までの値が含まれているためです。その後、値は有効な値ではありません。あなただけが例外を得ました インデックスが必要な目的
newuser

各要素のindex [location]が文字列配列に含まれることを知る必要があります。
Javaの質問

それは機能します:)このようにするとonclick = "getCategoryIndex($ {loop.index})" ...ヘルプに感謝します
Javaの質問

19

同様の問題に直面しました。もう少しオプションがあることを理解しました。varStatus= "loop"、ここでループは、lopのインデックスを保持する変数になります。

Zeorベースインデックスまたは1つのベースインデックスを読み取るために使用できます。

${loop.count}` it will give 1 starting base index.

${loop.index} it will give 0 base index as normal Index of array 0から開始します。

例えば ​​:

<c:forEach var="currentImage" items="${cityBannerImages}" varStatus="loop">
<picture>
   <source srcset="${currentImage}" media="(min-width: 1000px)"></source>
   <source srcset="${cityMobileImages[loop.count]}" media="(min-width:600px)"></source>
   <img srcset="${cityMobileImages[loop.count]}" alt=""></img>
</picture>
</c:forEach>

詳細については、このリンクを参照してください


11

次のvarStatusような属性を使用できます:-

<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">

myIndex.indexはインデックスを提供します。次にmyIndexLoopTagStatusオブジェクトを示します。

したがって、次のようにJavaScriptメソッドに送信できます。

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

私はこれを受け取りUncaught ReferenceError: myIndex is not defined 、あなたの努力に+1します
Javaの質問

0
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

上記の行は私にエラーを与えていました。だから私は以下のように書き留めましたが、これは私にとってはうまくいきます。

<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>

たぶん他の誰かが同じエラーを受け取るかもしれません。この男を見て!


0

これは私にとってはうまくいきます:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.