web-dev-qa-db-ja.com

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

次のような値を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()"に渡すにはどうすればよいですか。

93
Java Questions

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

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

私は同様の問題に直面している今、私はもう少し選択肢があることを理解しています:varStatus = "loop"、これはlopのインデックスを保持するloop will変数です。

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>

詳しくはこちらを参照してください リンク

15
Laxman G

あなたはこのようにvarStatus属性を使うことができます: -

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

myIndex.indexはあなたにインデックスを与えます。ここでmyIndexLoopTagStatus オブジェクトです。

それ故に、あなたはこのようにあなたのJavascriptメソッドにそれを送ることができます -

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

$ {categoryName}

上記の行は私にエラーを与えていました。だから私は私のためにうまく働いている以下の方法で書き留めた。 ') "href ="# "> $ {categoryName}

他の誰かが同じエラーになるかもしれません。この人を見て!

0
Rakesh Kumar

これは私のために働く:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
0
Pradeep