jstl迭代器映射和列表

时间:2012-03-13 16:39:17

标签: java jstl

以下代码无效:

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

你能告诉我为什么我不能得到第二和第三个值(foodName2foodNum.key / foodName2foodNum.value)

2 个答案:

答案 0 :(得分:1)

我认为Map<String, List<Map<String, Integer>>>应为Map<String, Map<String, Integer>>,因为您希望foodName2foodNum成为地图,而不是地图列表,map2则为Map.Entry<String, Map<String, Integer>>类型}。

答案 1 :(得分:1)

foodName2foodNum是整个地图而不是单个地图条目,因此没有键和值。 如果需要字符串键和Map条目中的Integer值,请尝试在map2.value循环中创建另一个c:forEach循环。例如。

<c:forEach items="${foodName2foodNum}" var="thirdLoopVar">
  <p>${thirdLoopVar.key}</p>
  <p>${thirdLoopVar.value}</p>
</c:forEach>