webentwicklung-frage-antwort-db.com.de

Verwenden Sie <c: forEach> mit HashMap

Ich habe eine Java Klasse, die ein Servlet-Attribut auf ein HashMap-Objekt setzt:

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

dabei ist request ein HttpServletRequest-Objekt und da.getSecurityTypes() gibt ein HashMap-Objekt zurück.

Gibt es eine Möglichkeit, die HashMap-Auflistung mit c: foreach oder anderen JSTL-Tags zu durchsuchen?

Ich dachte:

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

Oder wenn es nicht möglich ist, wie würde man ein benutzerdefiniertes Tag erstellen, um dies zu verarbeiten?

Das Zurückgreifen auf Java - Code auf meiner JSP-Seite ist mein letzter Ausweg, und ich möchte wissen, ob dies mit JSTL möglich ist.

Danke, Jonas.

49
jonasespelita

Ja, das ist völlig akzeptabel.

Wenn Sie <c:forEach> Um über ein Map zu iterieren, ist jedes Element in der Iteration eine Instanz von Map.Entry. Geben Sie also Ihr Beispiel:

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

Es funktioniert, Sie haben type.key und type.value zum Spielen in der Schleife.

5
daveb