Come eseguire iterazioni su una ArrayList all’interno di una HashMap utilizzando JSTL?

Ho una mappa come questa,

Map<Integer,ArrayList> myMap = new LinkedHashMap<Integer,ArrayList>(); 

Ora devo iterare questa mappa e poi l’ArrayList all’interno della mappa. Come posso farlo usando JSTL?

È ansible utilizzare il JSTL per eseguire iterazioni su array, raccolte e mappe.

In caso di array e raccolte, ogni iterazione var lo darà solo l’object attualmente iterato immediatamente.

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  Item = ${item}

In caso di mappe, ogni iterazione var la fornirà un object Map.Entry che a sua volta ha metodi getKey() e getValue() .

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

Nel tuo caso particolare, ${entry.value} è in realtà una List , quindi devi anche iterare su di essa:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  Key = ${entry.key}, values =  ${item} ${!loop.last ? ', ' : ''} 

Il varStatus è lì solo per comodità;)

Per capire meglio cosa sta succedendo qui, ecco una semplice traduzione Java:

 for (Entry> entry : map.entrySet()) { out.print("Key = " + entry.getKey() + ", values = "); for (Iterator iter = entry.getValue().iterator(); iter.hasNext();) { Object item = iter.next(); out.print(item + (iter.hasNext() ? ", " : "")); } out.println(); } 

Guarda anche:

  • Come eseguire il ciclo di una HashMap in JSP?
  • Mostra JDBC ResultSet in HTML nella pagina JSP usando pattern MVC e DAO
  • Come eseguire il looping su un determinato numero di volte in JSTL?

Hai provato qualcosa del genere?

   ...   

non hai chiuso c tag.prendi questo

   Key = ${entry.key}, values =  ${item} ${!loop.last ? ', ' : ''} 

Puoi anche eseguire il ciclo attorno alla mappa.valori se conosci la chiave

  ${value}