2012-03-13 8 views
0

次のコードが動作していない:私は2番目と3番目の値を取得することはできませんなぜ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

答えて

1

foodName2foodNumは、1つのマップエントリではなく、マップ全体であるため、キーと値はありません。 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

+0

フェリックスを明確にしてくれてありがとう。私はあなたのコメントに一致する答えを更新しました。 – AlanS

1

I Map<String, List<Map<String, Integer>>>foodName2foodNumをマップではなくマップのリストにする必要があるため、map2Map.Entry<String, Map<String, Integer>>であるため、Map<String, Map<String, Integer>>になるはずです。