2010-02-05 13 views
41

tengo una clase de Java que establece un atributo servlet a un objeto HashMap:Uso <c:forEach> con HashMap

request.setAttribute("types", da.getSecurityTypes()); 

donde request es un objeto HttpServletRequest y da.getSecurityTypes() devuelve un objeto HashMap.

¿Hay alguna manera de acceder a la colección HashMap con c: foreach u otras etiquetas JSTL?

que estaba pensando:

<c:forEach var="type" items="${types}"> 
       ... 
    </c:forEach> 

o si no se puede hacer, ¿cómo podría uno hacer una etiqueta personalizada para procesar esto?

Recurrir al código Java en mi página JSP es mi último recurso y me gustaría saber si esto es posible con JSTL.

Gracias, Jonas.

Respuesta

95

Sí, esto es perfectamente aceptable.

Cuando utiliza <c:forEach> para iterar en un Map, cada elemento en la iteración es una instancia de Map.Entry. Así que, dado su ejemplo:

<c:forEach var="type" items="${types}"> 
    Key is ${type.key} 
    Value is ${type.value} 
</c:forEach> 
5

Funciona, tendrá type.key y type.value para jugar en el circuito.