web-dev-qa-db-fra.com

Utilisez <c: forEach> avec HashMap

J'ai une classe Java qui définit un attribut de servlet sur un objet HashMap:

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

request est un objet HttpServletRequest et da.getSecurityTypes() renvoie un objet HashMap.

Existe-t-il un moyen de parcourir la collection HashMap en utilisant c: foreach ou d'autres balises JSTL?

Je pensais:

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

Ou si cela ne peut pas être fait, comment créer une balise personnalisée pour traiter cela?

Recourir à Java dans ma page JSP est mon dernier recours et je voudrais savoir si cela est possible avec JSTL.

Merci, Jonas.

49
jonasespelita

Oui, c'est parfaitement acceptable.

Lorsque vous utilisez <c:forEach> pour itérer sur un Map, chaque élément de l'itération est une instance de Map.Entry. Donc, étant donné votre exemple:

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

Cela fonctionne, vous aurez type.key et type.value pour jouer en boucle.

5
daveb