按键获取值,并使用 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);    

我需要在 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

最新更新