Следующий код не работает:
<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)
foodName2foodNum - это целая карта, а не одна запись карты, поэтому не имеет ключа и значения. Если вам нужны ключи String и значения Integer из записей Map, попробуйте создать еще один цикл c: forEach внутри цикла map2.value. Например.
<c:forEach items="${foodName2foodNum}" var="thirdLoopVar"> <p>${thirdLoopVar.key}</p> <p>${thirdLoopVar.value}</p> </c:forEach>
Я думаю, Map<String, List<Map<String, Integer>>> должно быть Map<String, Map<String, Integer>>, потому что вы хотите, чтобы foodName2foodNum была картой, а не списком карт, и тогда map2 имеет тип Map.Entry<String, Map<String, Integer>>.
Map<String, List<Map<String, Integer>>>
Map<String, Map<String, Integer>>
foodName2foodNum
map2
Map.Entry<String, Map<String, Integer>>