EL表達式從數組 Map List集合取值

(3)數組或集合的索引只能使用[]
  如:${sessionScope.user[0]}     ${sessionScope.list[1].name}
屬性值:${hello}
對象值
姓名:${user.username}
年齡:${user.age}
所屬組:${user.group.name}
一、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<String,String> map2 = new HashMap();
map2.put("a","hello world");
map2.put("b","this is map");
request.setAttribute("map2",map2);
     %>
<br>
    鍵值對遍歷<br>
<c:forEach var="item" items="${map2}">
${item.key} > ${item.value} <br>
</c:forEach>
    鍵遍歷<br>
<c:forEach var="item" items="${map2}">
${item.key}<br>
</c:forEach>
    值遍歷<br>
<c:forEach var="item" items="${map2}">
   ${item.value}<br>
 </c:forEach>
     根據鍵遍歷值<br>
<c:forEach var="item" items="${map2}">
  ${item['a']}<br>
  ${item['b']}<br>
</c:forEach>
 <body>
<br><br>
<%
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
List<String> list2 = new ArrayList<String>();
list2.add("aaaaaa");
list2.add("bbbbbb");
Map<String,List<String>> map = new HashMap();//(List<Map(k,v)>同理)
map.put("a",list);
map.put("b",list2);
request.setAttribute("map",map);
%>
   經過鍵得到列表值,並遍歷列表<br>
<c:forEach var="item" items="${map['a']}">
${item }<br>
</c:forEach><br>
<c:forEach var="item" items="${map['b']}">
${item }<br>
</c:forEach> <br>
  map中值爲列表,直接遍歷列表中的每一項<br>
<c:forEach var="item" items="${map}">
<c:forEach items="${item.value}" var="it">
${it }<br>
</c:forEach>
</c:forEach>

二、數組
假設Action中有數組
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}
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表達式對運算符的支持
1+2=${1+2}
10/5=${10/5}
10 div 5=${10 div 5}
10%3=${10%3}
10 mod 3=${10 mod 3}
el表達式支持算數運算符和邏輯運算符
el表達式的函數
判斷值是否爲空:
${empty  scope中的屬性名}
判斷值爲非空:
${!empty  scope中的屬性名}java

相關文章
相關標籤/搜索