Heim >Java >javaLernprogramm >Wie durchläuft man eine HashMap, um eine JSP-Dropdown-Liste zu füllen?

Wie durchläuft man eine HashMap, um eine JSP-Dropdown-Liste zu füllen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 14:21:10809Durchsuche

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

Durchlaufen einer HashMap in JSP

Problemstellung

Wie kann man eine HashMap innerhalb von JSP-Skriptlets effektiv durchlaufen, um eine Dropdown-Liste zu füllen?

Lösung

In JSP das Durchlaufen einer HashMap ist identisch mit regulärem Java-Code. Man kann den folgenden Ansatz anwenden:

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

JSTL für Iterationen verwenden

Von der Verwendung von JSP-Skriptlets wird jedoch abgeraten. Stattdessen wird empfohlen, JSTLs zu nutzen. Tag, der die Iteration über Maps ermöglicht. Jede Iteration gibt ein Map.Entry-Objekt mit den Methoden getKey() und getValue() zurück.

Zum Beispiel:

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

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

Implementieren des Select Drop-Down

Anpassen des oben genannten Code zum Ausfüllen einer Dropdown-Liste:

<%@ 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>

Datenplatzierung in Geltungsbereich

Um Länder aus ${countries} heraus zugänglich zu machen, muss es im entsprechenden Geltungsbereich platziert werden. Dies kann erreicht werden durch:

  • Anforderungsbereich (Servlet doGet-Methode):

    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);
    }
  • Anwendungsweiter Bereich (ServletContextListener contextInitialized Methode):

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

Zusätzliche Ressourcen

  • [Iterieren über Listen und Karten in JSP mit JSTL](https://www.journaldev.com/2680/jsp-iterate-over-list-map-jstl)
  • [Iterieren über verschachtelte Karten in JSTL](https://stackoverflow.com/questions/11210152/how-to-iterate-over-a-nested-map-in-c-forEach)
  • [Iterieren einer ArrayList innerhalb einer HashMap mit JSTL](https://stackoverflow.com/questions/13002775/how-to-iterate-an-arraylist-inside-a-hashmap-using-jstl)
  • [Servlet initialisieren und Anwendungsdaten teilen auf Startup](https://www.mkyong.com/servlet/startup-servlet-contextlistner/)

Das obige ist der detaillierte Inhalt vonWie durchläuft man eine HashMap, um eine JSP-Dropdown-Liste zu füllen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn