简体   繁体   English

通过键获取价值并在MAP上使用JSTL进行迭代

[英]Get value by key and Iterate using JSTL over MAP

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

I need to get data by key in JSP page and iterate over the map using JSTL. 我需要在JSP页面中通过键获取数据,并使用JSTL在地图上进行迭代。 How can I achieve this? 我该如何实现?

For example If get data by 1 then I will get map1 and will iterate over map1. 例如,如果通过1获得数据,那么我将获得map1并在map1上进行迭代。

Try this. 尝试这个。 if url is yourUrl?num=1 you show map1 with key 1 or yourUrl?num=2 map2 with key 2. 如果url是yourUrl?num=1 ,则显示键1的map1或显示键2的yourUrl?num=2 map2。

Get key as param with param.num in c:when . c:when中使用param.num获取密钥作为param。

<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>

Even easier, you can access your map by index and iterate through it(for example first map): 甚至更容易,您可以按索引访问地图并对其进行迭代(例如第一个地图):

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

Pair is pair of type <Short, List<Object>> from your map indexed by 1 in primaryMap , to access list, you can do: ${pair.value} , to access short you can do: ${pair.key} , note that you also can iterate through list, nested foreach is allowed in jstl Pair是对类型为<Short, List<Object>>的一对地图,该地图在primaryMap中以1索引,要访问列表,您可以执行: ${pair.value} ,要访问short可以进行: ${pair.key} ,请注意,您还可以遍历列表,jstl允许嵌套的foreach

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM