valores recorrer objetos imprimir implementar for examples example create como java jsp loops hashmap

java - objetos - ¿Cómo recorrer un HashMap en JSP?



recorrer hashmap de objetos java (2)

Del mismo modo que lo harías en el código Java normal.

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

Sin embargo , scriptlets (código Java sin formato en archivos JSP, esas cosas <% %> se consideran una práctica deficiente . Recomiendo instalar JSTL (simplemente suelte el archivo JAR en /WEB-INF/lib y declare los taglibs necesarios en la parte superior de JSP). Tiene una etiqueta <c:forEach> que puede iterar entre otros Map s. Cada iteración te dará un Map.Entry que a su vez tiene los getKey() y getValue() .

Aquí hay un ejemplo básico:

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

Por lo tanto, su problema particular se puede resolver de la siguiente manera:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <select name="country"> <c:forEach items="${countries}" var="country"> <option value="${country.key}">${country.value}</option> </c:forEach> </select>

Necesita un Servlet o un ServletContextListener para colocar los ${countries} en el alcance deseado. Si se supone que esta lista está basada en solicitud, entonces use el doGet() del Servlet :

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); }

O si se supone que esta lista es una constante para toda la aplicación, entonces use el contextInitialized() ServletContextListener para que se cargue solo una vez y se mantenga en la memoria:

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

En ambos casos, los countries estarán disponibles en EL por ${countries} .

Espero que esto ayude.

Ver también:

¿Cómo puedo recorrer un HashMap en JSP?

<% HashMap<String, String> countries = MainUtils.getCountries(l); %> <select name="country"> <% // Here I need to loop through countries. %> </select>


Dependiendo de lo que quiera lograr dentro del ciclo, itere sobre uno de estos en su lugar:

  • countries.keySet()
  • countries.entrySet()
  • countries.values()