121 votes

Comment obtenir une valeur d'index à partir d'une boucle foreach en jstl ?

J'ai une valeur définie dans le request comme le suivant,

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

et voici comment j'itère dans la page jsp

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

Comment obtenir l'index de chaque élément et le passer à la fonction JavaScript ? onclick="getCategoryIndex()" .

261voto

newuser Points 3563

Utiliser varStatus pour obtenir l'index c:forEach varStatus propriétés

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

25voto

Laxman G Points 1272

J'ai été confronté à des problèmes similaires. Après avoir fait des recherches, j'ai compris que nous disposions de quelques options supplémentaires avec les varStatus="loop" . Il peut utiliser un indice basé sur zéro ou un indice basé sur un :

  • El ${loop.index} utilise un indice de base de 0
  • El ${loop.count} utilise un indice de base 1

Par exemple :

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

Pour plus d'informations, veuillez consulter le site suivant lien .

14voto

R.J Points 21942

Vous pouvez utiliser le varStatus comme ceci : -

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

monIndex.index vous donnera l'index. Voici myIndex est un LoopTagStatus objet.

Ainsi, vous pouvez envoyer cela à votre méthode javascript comme ceci:-

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

1voto

Pradeep Points 11

Cela fonctionne pour moi :

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

0voto

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

La ligne ci-dessus me donnait une erreur. J'ai donc écrit de la façon suivante qui fonctionne bien pour moi.

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

Peut-être que quelqu'un d'autre pourrait avoir la même erreur. Regardez ça les gars !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X