2010-01-27 6 views
34

Si tengo un beans de respaldo JSF devuelvo un objeto de tipo ArrayList, podré usar <c:foreach> para iterar sobre los elementos en la lista. Cada elemento contiene un mapa y aunque la pregunta de cómo acceder al contenido del mapa a través de JSTL ha sido respondida here, si paso una matriz de tales mapas, no puedo encontrar cómo iterar sobre ellos y aún acceder al contenido del mapa usando JSTL . Hay documentación que se refiere a iteradores simples pero no a aquellos cuyos ítems son en sí mismos mapas.Iterar elementos de List y Map usando JSTL <c:forEach> tag

Si alguien puede darme un ejemplo simple de cómo se repite una Lista java en JSP estaría masivamente agradecido. Marca

Respuesta

86

Marcar, esto ya está respondido en su previous topic. Pero bueno, aquí está de nuevo:

Supongamos ${list} apunta a un List<Object>, la siguiente

<c:forEach items="${list}" var="item"> 
    ${item}<br> 
</c:forEach> 

tiene básicamente el mismo que el de la siguiente manera en el "Java normal":

for (Object item : list) { 
    System.out.println(item); 
} 

Si usted tiene un List<Map<K, V>> en su lugar, luego el siguiente

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

hace básicamente lo mismo que lo siguiente en "Java normal":

for (Map<K, V> map : list) { 
    for (Entry<K, V> entry : map.entrySet()) { 
     System.out.println(entry.getKey()); 
     System.out.println(entry.getValue()); 
    } 
} 

El key y value aquí son métodos no especiales o menos. Son en realidad métodos getter del objeto Map.Entry (haga clic en el enlace azul Map.Entry para ver el documento API). En EL (Lenguaje de Expresión) puede usar el operador de punto . para acceder a los métodos getter usando "nombre de propiedad" (el nombre del método getter sin el prefijo get), todo de acuerdo con la especificación Javabean.

Dicho esto, realmente necesita limpiar las "respuestas" en su tema anterior ya que agregan ruido a la pregunta. Lea también los comentarios que publiqué en sus "respuestas".

+0

Me encantaría limpiarlos, pero no hay un botón de borrar y grep 'eliminar' en el enlace de referencia completa de la página de edición no devuelve nada. Por favor, hágamelo saber cómo puedo eliminar el bum amswers. – volvox

+0

Tal vez sea debido a su baja reputación que no pueda eliminar. Lo mejor que puedes hacer ahora es votar las respuestas * reales * (presiona el triángulo superior en el lado izquierdo de la respuesta) y deja tus respuestas tal como están, para que las respuestas reales se organicen más arriba en la lista. Para obtener más información sobre Stackoverflow, lea los enlaces "acerca de" y "preguntas frecuentes" en la barra superior :) – BalusC

+0

Es por mi baja reputación. pero creo que el hecho de que no puedo borrar mis propias respuestas es un poco cojo. – volvox

0

probar esto

<c:forEach items="${list}" var="map"> 
    <tr> 
     <c:forEach items="${map}" var="entry"> 

      <td>${entry.value}</td> 

     </c:forEach> 
    </tr> 
</c:forEach> 
Cuestiones relacionadas