首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSTL EL 表達式處理 Map 與巢狀 List 完整指南

     編輯:關於JSP

基礎語法:Map 鍵值存取

EL 中使用方括號語法獲取 Map 值:

${map['key']}   // 等同 map.get("key")
${map.key}      // 僅當 key 符合 Java 標識符規則時可用

遍歷 Map: 變量類型為 Map.Entry

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

巢狀結構:Map<String, List<String>> 遍歷

場景 1:已知 Key 直接取 List 遍歷

<c:forEach var="item" items="${map['a']}">${item}<br/></c:forEach>
<c:forEach var="item" items="${map['b']}">${item}<br/></c:forEach>

場景 2:雙層巢狀遍歷所有 List 元素

<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 判斷。
  • EL 變量查找順序:page → request → session → application,同名屬性以最小作用域為準。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved