Comment parcourir une HashMap dans JSP?

Comment puis-je parcourir une HashMap dans JSP?

 <% HashMap counsortinges = MainUtils.getCounsortinges(l); %>    

Tout comme vous le feriez dans un code Java normal.

 for (Map.Entry entry : counsortinges.entrySet()) { Ssortingng key = entry.getKey(); Ssortingng value = entry.getValue(); // ... } 

Cependant , les scriptlets (code Java brut dans les fichiers JSP, ces <% %> choses) sont considérés comme une mauvaise pratique . Je recommande d’installer JSTL (déposez simplement le fichier JAR dans /WEB-INF/lib et déclarez les taglibs nécessaires en haut de JSP). Il a une qui peut parcourir entre autres les Map s. Chaque itération vous donnera un Map.Entry qui a à son tour des getKey() et getValue() .

Voici un exemple de base:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  Key = ${entry.key}, value = ${entry.value}

Ainsi, votre problème particulier peut être résolu comme suit:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  

Vous avez besoin d’un Servlet ou d’un ServletContextListener pour placer les ${counsortinges} dans la scope souhaitée. Si cette liste est supposée être basée sur une requête, utilisez le doGet() Servlet :

 protected void doGet(HttpServletRequest request, HttpServletResponse response) { Map counsortinges = MainUtils.getCounsortinges(); request.setAtsortingbute("counsortinges", counsortinges); request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); } 

Ou si cette liste est supposée être une constante à l’échelle de l’application, utilisez alors contextInitialized() pour qu’elle ne soit chargée qu’une seule fois et conservée en mémoire:

 public void contextInitialized(ServletContextEvent event) { Map counsortinges = MainUtils.getCounsortinges(); event.getServletContext().setAtsortingbute("counsortinges", counsortinges); } 

Dans les deux cas, les counsortinges seront disponibles en EL par ${counsortinges} .

J’espère que cela t’aides.

Voir également:

  • Itérer les éléments de List et Map en utilisant la balise JSTL
  • Comment itérer sur une carte nestede dans
  • Comment itérer une ArrayList dans un HashMap en utilisant JSTL?
  • Utilisation d’un servlet de démarrage automatique spécial pour l’initialisation au démarrage et le partage des données d’application

En fonction de ce que vous voulez accomplir dans la boucle, effectuez une itération sur l’un d’eux à la place:

  • counsortinges.keySet()
  • counsortinges.entrySet()
  • counsortinges.values()