Java jstl迭代器映射和列表
以下代码不起作用:Java jstl迭代器映射和列表,java,jstl,Java,Jstl,以下代码不起作用: <c:forEach items="${orderNumByDepartment}" var="map2"> <c:forEach items="${map2.value }" var="foodName2foodNum"> <tr> <td>${map2.key }</td> <t
<c:forEach items="${orderNumByDepartment}" var="map2">
<c:forEach items="${map2.value }" var="foodName2foodNum">
<tr>
<td>${map2.key }</td>
<td>${foodName2foodNum.key }</td>
<td>${foodName2foodNum.value }</td>
</tr>
</c:forEach>
</c:forEach>
orderNumByDepartment is Map<String, List<Map<String, Integer>>> type.
${map2.key}
${foodName2foodNum.key}
${foodName2foodNum.value}
OrderNumberDepartment是映射类型。
你能告诉我为什么我不能得到第二个和第三个值(foodName2foodNum.key/foodName2foodNum.value)我认为
Map
应该是Map
,因为你想foodName2foodNum
成为一个Map,不是地图列表,map2
则为Map类型。Entry
foodName2foodNum是整个地图,而不是单个地图条目,因此没有键和值。
如果需要映射项中的字符串键和整数值,请尝试在map2.value循环中创建另一个c:forEach循环。例如
<c:forEach items="${foodName2foodNum}" var="thirdLoopVar">
<p>${thirdLoopVar.key}</p>
<p>${thirdLoopVar.value}</p>
</c:forEach>
${thirdLoopVar.key}
${thirdLoopVar.value}
首先,为什么在}
之前需要空白?map2.value是一个列表,而foodName2foodNum实际上是一个映射。我现在找到了答案,我应该使用另一个forEach来迭代foodName2foodNum(映射)。谢谢你的回答:)谢谢你澄清费利克斯。我已经更新了答案以匹配您的评论。