web-dev-qa-db-fra.com

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

J'ai une valeur définie dans l'objet request comme ci-dessous,

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 puis-je obtenir l'index de chaque élément et le passer à la fonction JavaScript onclick="getCategoryIndex()".

93
Java Questions

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

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

Je fais face à un problème similaire maintenant, je comprends, nous avons encore une option: varStatus = "loop", Ici sera une variable variable qui contiendra l’index de lop.

Il peut être utilisé pour lire pour index de base Zeor ou 1 index de base.

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

${loop.index} it will give 0 base index as normal Index of array commence à 0.

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 s'il vous plaît se référer à ceci lien

15
Laxman G

Vous pouvez utiliser l'attribut varStatus comme ceci: -

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

myIndex.index vous donnera l'index. Ici myIndex est un objet LoopTagStatus .

Par conséquent, vous pouvez envoyer cela à votre méthode javascript comme ceci: -

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

dessus de la ligne me donnait une erreur. J'ai donc écrit ci-dessous ce 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 ces gars!

0
Rakesh Kumar

Cela fonctionne pour moi:

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