2017-02-18 7 views
0
Map<Short, Map<Short, List<Object>>> primaryMap = new Map<>(); 
Map<Short, List<Object>> map1 = new HashMap<Short, List<Object>>(); 
map1.put(1, Object1); 
map1.put(2, Object2); 
map1.put(3, Object3); 
map1.put(4, Object4); 
map2 = new HashMap<Short, List<Object>>(); 
map2.put(1, Object1); 
map2.put(2, Object2); 
map2.put(3, Object3); 
map2.put(4, Object4); 
primaryMap.put(1, map1); 
primaryMap.put(2, map2); 

ModelAndView returnModel = new ModelAndView("customer/blockcard"); 
returnModel.addObject("primaryMap", primaryMap);  

Ich brauche Daten per Schlüssel in JSP-Seite und iterieren über die Karte mit JSTL. Wie kann ich das erreichen?Wert mit Schlüssel erhalten und Iterate mit JSTL über MAP

Zum Beispiel, wenn Daten durch 1 erhalten, dann werde ich map1 und werde über Map1 iterieren.

Antwort

0

Versuchen Sie dies. wenn url ist yourUrl?num=1 zeigen Sie map1 mit der Taste 1 oder yourUrl?num=2 map2 mit Schlüssel 2.

Get Schlüssel als param mit param.num in c: wenn.

<c:forEach items="${primaryMap}" var="primary"> 
     <c:choose> 
      <!--test="primary.key eq 1"--> 
      <c:when test="${primary.key eq param.num}"> 
       <c:forEach items="${primary.value}" var="subPrimary"> 
        <c:forEach items="${subPrimary.value}" var="listElement"> 
         ${listElement} 
        </c:forEach> 
         <hr /> 
       </c:forEach> 
      </c:when>   
     </c:choose> 
</c:forEach> 
0

Noch einfacher können Sie Ihre Karte durch den Index zugreifen und durchlaufen sie (zum Beispiel erste Karte):

<c:forEach items="${primaryMap[1]}" var="pair"> 
      //do whatever you want to do 
</c:forEach> 

Pair ist Paar Typ <Short, List<Object>> von Ihrer Karte um 1 in primaryMap indiziert , Zugriff auf die Liste, können Sie tun: ${pair.value}, um Zugriff auf Sie können tun: ${pair.key}, beachten Sie, dass Sie auch durch die Liste durchlaufen können, verschachtelt Foreach ist in JSTL

erlaubt
Verwandte Themen