2012-03-13 96 views
0

後續代碼不工作: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)

+0

首先,爲什麼在'}'之前需要空白? – cherouvim 2012-03-13 16:40:24

回答

1

foodName2foodNum是整個地圖而不是一個地圖項,所以沒有一個鍵和值。 如果您想要Map條目的String鍵和Integer值,請嘗試在map2.value循環內創建另一個c:forEach循環。例如。

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

map2.value是一個列表,foodName2foodNum實際上是一張地圖。我現在找到答案,我應該使用另一個forEach來迭代foodName2foodNum(map)。謝謝你的回答:) – Felix 2012-03-14 03:13:30

+0

感謝澄清費利克斯。我已更新答案以符合您的評論。 – AlanS 2012-03-14 16:20:22

1

我認爲Map<String, List<Map<String, Integer>>>應該是Map<String, Map<String, Integer>>,因爲你想foodName2foodNum是地圖,而不是地圖列表,map2然後是Map.Entry<String, Map<String, Integer>>類型。