按键获取值并使用JSTL over MAP进行迭代

时间:2017-02-18 10:05:32

标签: jsp spring-mvc jstl

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迭代地图。我怎样才能做到这一点?

例如,如果获取数据1,那么我将得到map1并将迭代map1。

2 个答案:

答案 0 :(得分:0)

试试这个。如果网址为yourUrl?num=1,则显示带有密钥1的map1或带有密钥2的yourUrl?num=2 map2。

使用 c中的param.num获取密钥作为参数:

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

答案 1 :(得分:0)

更简单的是,您可以通过索引访问地图并迭代它(例如第一张地图):

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

配对是一对类型              您的地图<Short, List<Object>>primaryMap中被1索引,              要访问列表,您可以执行:${pair.value},以便访问简短              执行:${pair.key},请注意您也可以遍历列表,嵌套              在jstl中允许使用foreach