EL 中使用方括號語法獲取 Map 值:
${map['key']} // 等同 map.get("key")
${map.key} // 僅當 key 符合 Java 標識符規則時可用
<c:forEach var="entry" items="${map2}">
鍵: ${entry.key} > 值: ${entry.value} <br/>
</c:forEach>
原理:items 為 java.util.Map 時,迭代器產出 Map.Entry,EL 按 JavaBean 慣例調用 getKey()/getValue()。
<!-- 僅鍵 -->
<c:forEach var="entry" items="${map2}">${entry.key}<br/></c:forEach>
<!-- 僅值 -->
<c:forEach var="entry" items="${map2}">${entry.value}<br/></c:forEach>
<c:forEach var="item" items="${map['a']}">${item}<br/></c:forEach>
<c:forEach var="item" items="${map['b']}">${item}<br/></c:forEach>
<c:forEach var="entry" items="${map}">
<c:forEach var="item" items="${entry.value}">
${item}<br/>
</c:forEach>
</c:forEach>
外層 entry 為 Map.Entry,entry.value 即內層 List。
<%
Map<String, List<String>> map = new HashMap<>();
List<String> list1 = Arrays.asList("first", "second");
List<String> list2 = Arrays.asList("aaaaaa", "bbbbbb");
map.put("a", list1);
map.put("b", list2);
request.setAttribute("map", map);
%>
${map['key.name']},不可用點號。items 為 null 時 forEach 靜默不報錯,但建議後端保證非空或用 empty 判斷。