Maison >Java >javaDidacticiel >Comment parcourir un HashMap pour remplir une liste déroulante JSP ?

Comment parcourir un HashMap pour remplir une liste déroulante JSP ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 14:21:10871parcourir

How to Iterate Through a HashMap to Populate a JSP Dropdown List?

Parcourir une HashMap dans JSP

Énoncé du problème

Comment parcourir efficacement une HashMap dans des scriptlets JSP pour remplir une liste déroulante ?

Solution

En JSP, parcourir un HashMap est identique au code Java standard. On peut utiliser l'approche suivante :

for (Map.Entry<String, String> entry : countries.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
}

Utilisation de JSTL pour les itérations

Cependant, l'utilisation de scriptlets JSP est déconseillée. Au lieu de cela, il est recommandé d'exploiter la fonction balise, qui permet d’itérer sur Maps. Chaque itération renvoie un objet Map.Entry avec les méthodes getKey() et getValue().

Par exemple :

<%@ taglib prefix="c" uri="jakarta.tags.core" %>

<c:forEach items="${map}" var="entry">
    Key = ${entry.key}, value = ${entry.value}<br>
</c:forEach>

Implémentation de la liste déroulante Select

Adaptation de la code susmentionné pour remplir une liste déroulante :

<%@ taglib prefix="c" uri="jakarta.tags.core" %>

<select name="country">
    <c:forEach items="${countries}" var="country">
        <option value="${country.key}">${country.value}</option>
    </c:forEach>
</select>

Placement des données dans Champ d'application

Pour rendre les pays accessibles depuis ${countries}, il doit être placé dans le champ d'application approprié. Ceci peut être réalisé via :

  • Portée de la requête (méthode Servlet doGet) :

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
      Map<String, String> countries = MainUtils.getCountries();
      request.setAttribute("countries", countries);
      request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    }
  • Portée à l’échelle de l’application (ServletContextListener contextInitialized méthode) :

    public void contextInitialized(ServletContextEvent event) {
      Map<String, String> countries = MainUtils.getCountries();
      event.getServletContext().setAttribute("countries", countries);
    }

Ressources supplémentaires

  • [Itération sur des listes et des cartes dans JSP à l'aide JSTL](https://www.journaldev.com/2680/jsp-iterate-over-list-map-jstl)
  • [Itération sur des cartes imbriquées dans JSTL](https://stackoverflow.com/questions/11210152/how-to-iterate-over-a-nested-map-in-c-forEach)
  • [Itérer une ArrayList dans une HashMap en utilisant JSTL](https://stackoverflow.com/questions/13002775/how-to-iterate-an-arraylist-inside-a-hashmap-using-jstl)
  • [Initialisation du servlet et partage des données d'application sur Démarrage](https://www.mkyong.com/servlet/startup-servlet-contextlistner/)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn