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
Libérer: 2024-12-26 14:21:10
original
809 Les gens l'ont consulté

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();
}
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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);
    }
    Copier après la connexion
  • 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);
    }
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal