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,上述两种方式都可以成功取到值