2010-02-05 17 views
41

ho una classe Java che definisce un attributo servlet per un oggetto HashMap:Usa <c:forEach> con HashMap

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

dove request è un HttpServletRequest oggetto, e da.getSecurityTypes() restituisce un oggetto HashMap.

C'è un modo per passare attraverso la raccolta HashMap utilizzando c: foreach o altri tag JSTL?

Stavo pensando:

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

Oppure, se non si può fare, come si potrebbe fare un tag personalizzato per elaborare questo?

Il ricorso al codice Java nella mia pagina JSP è la mia ultima risorsa e mi piacerebbe sapere se questo è possibile con JSTL.

Grazie, Jonas.

risposta

95

Sì, questo è perfettamente accettabile.

Quando si utilizza <c:forEach> per iterare su un Map, ogni elemento nell'iterazione è un'istanza di Map.Entry. Quindi, dato il tuo esempio:

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

Funziona, avrai type.key e type.value per giocare con il ciclo.

Problemi correlati