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。
试试这个。 如果 URLyourUrl?num=1
则显示带有键 1 的 map1 或yourUrl?num=2
带有键 2 的 map2。
获取密钥作为参数,并在c:when 中使用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>
更简单的是,您可以按索引访问地图并遍历它(例如第一个地图):
<c:forEach items="${primaryMap[1]}" var="pair">
//do whatever you want to do
</c:forEach>
对是成对的类型<Short, List<Object>>
从您的地图中索引 1 inprimaryMap
, 要访问列表,您可以执行以下操作:${pair.value}
,访问短,您可以 do:${pair.key}
,请注意,您也可以遍历列表,嵌套 在JSTL中允许使用Foreach