web-dev-qa-db-fra.com

Obtenir des éléments d'arraylist basés sur index dans jstl

C'est peut-être une chose relativement simple à faire, mais pour une raison quelconque, il semble que je ne réussisse pas.

Comment peut-on obtenir un élément à partir d'un tableau ListeLe dans jstl basé sur un index.

En Java pur, disons que j'ai cet arraliste

ArrayList< String > colors = new ArrayList< String >();
   colors.add("red");
   colors.add("orange");
   colors.add("yellow");
   colors.add("green");
   colors.add("blue");

si je fais System.out.println(colors.get(1));, la première couleur de arrayList est basée sur sur l'index que j'ai fourni et qui se trouve être red

Vous vous demandez comment y parvenir en jstl. J'ai joué avec le tag foreach en jstl mais je ne l'ai pas tout à fait bien compris.

<c:forEach items="colors" var="element">    
 <c:out value="${element.get(1)}"/>
</c:forEach>
8
tawheed

Lorsque vous dites colors.get(1); ou ${element[1]}, il s’agit en fait d’une seule entrée dans la liste. Mais lorsque vous utilisez c:forEach, il itère la boucle ... dépend de ce que vous essayez d’atteindre. Si vous voulez juste le Nième élément, essayez

<c:out value="${colors[1]}"/> // This prints the second element of the list

mais plutôt vous voulez imprimer les éléments entiers, vous devriez aller pour la boucle comme

<c:forEach items="${colors}" var="element">    
    <c:out value="${element}"/>
</c:forEach>

Notez également que si vous écrivez comme <c:forEach items="colors" var="element">, la valeur est littéralement traitée comme "colors". Donc, si c'est un nom de variable, vous devez l'indiquer dans ${} comme ${colors} comme illustré dans l'exemple ci-dessus.

17
Syam S

Cela devrait fonctionner:

 <c:out value="${colors[0]}"/>

Il vous imprimera "rouge".

Mais si vous voulez imprimer toutes les valeurs de votre liste, vous pouvez utiliser votre foreach comme ça:

<c:forEach items="colors" var="element">    
 <c:out value="${element}"/>
</c:forEach>

Ce code va parcourir votre liste colors et définir chaque élément de cette liste dans une variable appelée element. Donc, element a le même type que celui qui a paramétré votre liste (ici, String). Donc vous ne pouvez pas appeler get(1) sur String car il n’existe pas . Donc vous appelez directement <c:out value="${element}"/> qui appellera la méthode toString() de votre élément actuel.

2
lpratlong

Vous pouvez utiliser un accès basé sur un tableau comme suit:

<c:out value="${colors[0]}" />
0
Beau Grantham