2010-05-17 25 views
115

Estoy buscando tener un bucle JSTL a través de un Map<String, String> y mostrar el valor de la clave y su valor.Loop a través de un mapa con JSTL

Por ejemplo, tengo un Map<String, String> que puede tener cualquier cantidad de entradas, me gustaría recorrer este mapa usando JSTL y generar tanto la clave como su valor.

Sé cómo acceder al valor usando la clave ${myMap['keystring']}, pero ¿cómo accedo a la clave?

+0

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

Respuesta

255

De esta manera:

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

Nota para otros: no intente nombrar var en forEach loop "param" – user11153

2

puede recorrer un mapa hash como esto

<% 
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>    

Para mayor funcionalidad JSTL mirar here

+31

No use scripl ets. Ellos son malos. – tad

+0

@tad También he escuchado eso. ¿Pero por qué? –

+6

@ TJ- Como regla general, hay pocas buenas razones para poner una poderosa lógica en sus plantillas; son difíciles de depurar, mezclan paradigmas y pueden producir resultados inesperados. Además, el JSTL aready proporciona una facilidad para iterar limpiamente sobre los mapas: la etiqueta forEach. – tad

Cuestiones relacionadas