EL表达式取 Map、 List和数组的值
Jstl是sun的標準taglib庫,Jstl是標簽庫和el語言的結合。
el 表達式的隱含對象pageScope,requestScope,sessionScope,applicationScope。
1. [ ]與.運算符
EL 提供 . 和 [ ] 兩種運算符來導航數據。
下列兩者所代表的意思是一樣的:
user.name等于{user[“name”]}
. 和 [ ] 也可以同時混合使用,如下:
${sessionScope.userList[0].name},回傳結果為userList中第一個用戶的名字。
注意:使用[]時,里面是String類型要加雙引號“”,是數字,就直接寫數字,不要加雙引號
2. map集合
在EL中,方括號運算符用來檢索數組和集合的元素。對于實現 java.util.Map 接口的集合,方括號運算符使用關聯的鍵查找存儲在映射中的值。在方括號中指定鍵,并將相應的值作為表達式的值返回。
例如,表達式 ${map['key']}返回與 map標識符所引用的 Map 中的 “key” 鍵相關聯的值。當forEach 的items屬性中的表達式的值是java.util.Map時,則var中命名的變量的類型就是 java.util.Map.Entry。這時var=entry的話,用表達式${entry.key}取得鍵名。 用表達${entry.value}得到每個entry的值。這是因為java.util.Map.Entry對象有getKey和getValue方法,表達式語言遵守JavaBean的命名約定。
對map根據鍵遍歷值
<c:forEach var="item" items="${map}"> ${item['key1']}<br> ${item['key2']}<br> </c:forEach> <% List<String> list = new ArrayList<String>(); list.add("str1"); list.add("str2"); List<String> list2 = new ArrayList<String>(); list2.add("str3"); list2.add("str4"); Map<String,List<String>> map = new HashMap();//(List<Map(k,v)>同理) map.put("list",list); map.put("list2",list2); request.setAttribute("map",map); %>通過鍵獲得列表值,并遍歷列表
<c:forEach var="item" items="${map['list']}"> ${item } </c:forEach> <c:forEach var="item" items="${map['list2']}"> ${item } </c:forEach>map中值為列表,直接遍歷列表中的每一項
<c:forEach var="item" items="${map}"> <c:forEach items="${item.value}" var="item2"> ${item2 } </c:forEach> </c:forEach>但是要注意,如果你的numberMap是這樣的:
HashMap<Integer, String> numberMap= new HashMap<Integer, String>(); numberMap.put(0, "零"); numberMap.put(1, "一");在jsp頁面中${numberMap[1]}將取不到值,因為el表達式中數字1是Long類型,無法匹配到numberMap中的Integer 1 。明白了原理,事兒就好辦了。修改numberMap:
HashMap<Long, String> map = new HashMap<Long, String>(); map.put(0L, "零"); map.put(1L, "一");然后就可以啦${numberMap[1]}。
3. 數組
假設Controller中有數組 Char[] char={“1”.”2”}; request.setAttribute(“char”,char); ${char[1]} 數組中的對象 User[] users=new User[10]; for(int i=0;i<10;i++) { User u=new User(); u.setUsername(“U_”+i); users[i]=u; } request.setAttribute(“users”,users); ${users[1].username}4. list集合(set集合同理)
List list=new ArrayList(); list.add(user1); list.add(user2); list.add(user3); request.setAttribute(“list”,list); 取單個值: ${list[3].username} 遍歷取值:<c:forEach var="user" items="${list}"> <c:out value="${user.username}" /> </c:forEach> 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的EL表达式取 Map、 List和数组的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方立勋_30天掌握JavaWeb_Ser
- 下一篇: 序列、触发器和存储过程三者之间有啥关系