2010-05-17 3 views
115

Ich bin auf der Suche nach JSTL-Schleife durch eine Map<String, String> und geben Sie den Wert des Schlüssels und seinen Wert.Schleife durch eine Karte mit JSTL

Zum Beispiel habe ich eine Map<String, String>, die eine beliebige Anzahl von Einträgen haben kann, würde ich gerne diese Karte mit JSTL durchlaufen und geben Sie sowohl den Schlüssel und seinen Wert.

Ich weiß, wie Sie den Wert mit dem Schlüssel ${myMap['keystring']} zugreifen, aber wie kann ich auf den Schlüssel zugreifen?

+0

Verwandte: http://stackoverflow.com/questions/2117557/how-to-iterate-ein-arraylist-inside-a-hashmap-using-jstl – BalusC

Antwort

255

So:

<c:forEach var="entry" items="${myMap}"> 
    Key: <c:out value="${entry.key}"/> 
    Value: <c:out value="${entry.value}"/> 
</c:forEach> 
+11

Hinweis für andere: nicht versuchen, var in forEach loop "param" – user11153

2

Sie können Schleife durch eine Hash-Karte wie diese

<% 
ArrayList list = new ArrayList(); 
TreeMap itemList=new TreeMap(); 
itemList.put("test", "test"); 
list.add(itemList); 
pageContext.setAttribute("itemList", list);        
%> 

    <c:forEach items="${itemList}" var="itemrow"> 
    <input type="text" value="<c:out value='${itemrow.test}'/>"/> 
    </c:forEach>    

Weitere JSTL Funktionalität suchen here

+31

Verwenden Sie nicht scripl ets. Sie sind schlecht. – tad

+0

@tad Ich habe das auch gehört. Aber warum? –

+6

@ TJ- Als allgemeine Regel gibt es einige gute Gründe, um mächtige Logik in Ihre Vorlagen zu setzen; Sie sind schwer zu debuggen, sie mischen Paradigmen und können zu unerwarteten Ergebnissen führen. Außerdem bietet JSTL eine Möglichkeit, über Karten sauber zu iterieren: das forEach-Tag. – tad