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>
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.
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.
Vous pouvez utiliser un accès basé sur un tableau comme suit:
<c:out value="${colors[0]}" />