EL表達式獲取Map和List中的值
EL表達式取Map中的值:
-
當Map中是String,String時
后台servlet中:
Map<String, String> map1 = new HashMap<String, String>(); map1.put("a", "b"); map1.put("aa", "bb"); map1.put("aaa", "bbb"); |
前台jsp 中使用EL獲取Map:
-
使用${map1["a"]}或${map1.a}取值
${map1["a"]} ${map1.a} |
輸出為:
-
使用jstl的<forEach>標簽取值
<c:forEach items="${map1}" var="item"> key:<c:out value="${item.key}" /> value:<c:out value="${item.value}" /> <br/> </c:forEach> |
輸出為:
不知道為什么與存放的順序不同?
-
當Map中是Integer,String時
后台servlet中:
HashMap<Integer, String> map2 = new HashMap<Integer, String>();
map2.put(1, "b");
map2.put(2, "bb");
map2.put(3, "bbb");
前台jsp 中使用EL獲取Map:
-
使用${map2[1]}或${map2["1"]},不可以獲取到值,使用${map2.1}取值會報錯。當Map中的key類型為Long時,可以使用${map2[1]}取到值
-
使用jstl的<forEach>標簽取值,與Map中存放String,String時一樣,可以取到值
EL表達式取List的值:
后台servlet:
List<String> list1 = new ArrayList<String>();
list1.add("a");
list1.add("b");
list1.add("c");
list1.add("d");
前台jsp 中使用EL獲取Map:
-
使用${list1[1]}獲取值
-
使用jstl的<forEach>標簽取值
<c:forEach items="${list2 }" var="item">
<c:out value="${item}"></c:out> <br/>
</c:forEach>
無論List中存放的是String或是Integer,上述兩種方式都可以成功取到值
-