webentwicklung-frage-antwort-db.com.de

Elemente der Arrayliste basierend auf dem Index in jstl abrufen

Dies ist vielleicht eine relativ einfache Sache, aber aus irgendeinem Grund scheine ich es nicht richtig zu machen.

Wie bekommt man ein Element aus einer ArrayList in JSTL basierend auf einem Index.

Nehmen wir an, ich habe diesen Arralisten in reinem Java

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

wenn ich System.out.println(colors.get(1)); mache, erhalte ich die erste Farbe aus der Array-Liste basierend auf dem von mir angegebenen Index, der red ist.

Ich frage mich, wie ich das in jstl erreichen kann. Ich habe mit dem foreach-Tag in jstl gespielt, aber es nicht ganz richtig verstanden.

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

Wenn Sie colors.get(1); oder ${element[1]} sagen, verweist es tatsächlich auf einen einzelnen Eintrag in der Liste. Wenn Sie jedoch c:forEach verwenden, durchläuft er die Schleife . Das hängt davon ab, was Sie erreichen wollen. Wenn Sie nur das N-te Element möchten, versuchen Sie es

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

stattdessen möchten Sie die gesamten Elemente drucken, die Sie für die Schleife verwenden möchten

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

Beachten Sie auch, wenn Sie wie <c:forEach items="colors" var="element"> schreiben, wird der Wert wörtlich als "colors" behandelt. Wenn es sich also um einen Variablennamen handelt, müssen Sie ihn wie in Beispiel oben in ${} wie ${colors} angeben.

17
Syam S

Das sollte funktionieren:

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

Es wird "rot" gedruckt.

Wenn Sie jedoch alle Werte Ihrer Liste ausdrucken möchten, können Sie Ihre foreach so verwenden:

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

Dieser Code durchläuft Ihre Liste colors und setzt jedes Element dieser Liste in eine Variable mit dem Namen element. element hat also den gleichen Typ wie derjenige, der Ihre Liste parametrisiert hat (hier String). Sie können get(1) nicht für String aufrufen, da es nicht existiert . Sie rufen also direkt <c:out value="${element}"/> auf, die die toString()-Methode Ihres aktuellen Elements aufruft.

2
lpratlong

Sie können den Array-basierten Zugriff wie folgt verwenden:

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