2017-02-18 95 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);  

我需要通过JSP页面中的键获取数据并使用JSTL迭代地图。我怎样才能做到这一点?通过密钥获取值并通过MAP使用JSTL进行迭代

例如,如果通过1获取数据,那么我将得到map1并将遍历map1。

回答

0

试试这个。如果url为yourUrl?num=1告诉你MAP1与关键1或yourUrl?num=2 MAP2与关键2.

获取密钥PARAM与param.numC:当

<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

更容易,可以通过索引来访问地图,并通过它进行迭代(例如第一地图):

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

对是从地图由1 primaryMap索引对类型 <Short, List<Object>>的, 访问列表,你可以这样做:${pair.value},要访问短你可以 做:${pair.key},注意你也可以迭代通过列表,嵌套 foreach被允许在jstl中