Gebruik <c:forEach> met HashMap

Ik heb een Java-klasse die een servlet-attribuut instelt op een HashMap-object:

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

waar requesteen HttpServletRequest-object is en da.getSecurityTypes()een HashMap-object retourneert.

Is er een manier om door de HashMap-verzameling te gaan met c:foreach of andere JSTL-tags?

Ik dacht:

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

Of als het niet kan, hoe zou je dan een aangepaste tag maken om dit te verwerken?

Mijn toevlucht nemen tot Java-code op mijn JSP-pagina is mijn laatste redmiddel en ik zou graag willen weten of dit mogelijk is met JSTL.

Bedankt,
Jonas.


Antwoord 1, autoriteit 100%

Ja, dit is volkomen acceptabel.

Als je <c:forEach>gebruikt om een ​​Mapte herhalen, is elk item in de iteratie een instantie van Map.Entry. Dus gezien jouw voorbeeld:

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

Antwoord 2, autoriteit 5%

Het werkt, je hebt type.keyen type.valueom mee te spelen in de loop.

Other episodes