一、显示Map集合中的数据
示例代码如下:
<%
Map<String,Integer> grades = new HashMap<String,Integer>();
grades.put("Tom", 100);
grades.put("Lucy", 70);
request.setAttribute("grades", grades);
%>
<!-- 输出Map集合中Tom的分数 -->
${grades.Tom }//不推荐使用
${grades['Tom'] }//推荐使用
${grades["Tom"] }//推荐使用
运行结果如下图:
二、遍历Map集合
示例代码如下:
<%
Map<String,Integer> grades = new HashMap<String,Integer>();
grades.put("Tom", 100);
grades.put("Lucy", 70);
request.setAttribute("grades", grades);
%>
<!-- 遍历Map集合 -->
<c:forEach var="grade" items="${grades }">
${grade.key }-->${grade.value }
</c:forEach>
运行结果如下图:
三、注意事项
1、Map集合中的key最好符合Java标识符规范。如果不符合,则在EL表达式中不能使用.的方式获取到Map集合中key对应的value,只能通过[]的方式获取到key对应的value。示例代码如下:
<%
Map<String,Integer> grades = new HashMap<String,Integer>();
grades.put("1Tom", 100);
grades.put("Lucy", 70);
request.setAttribute("grades", grades);
%>
<!-- 输出Map集合中Tom的分数 -->
${grades.1Tom }//由于key不符合Java标识符规范,所以不能使用这种方式,运行会报错。
${grades['1Tom'] }
${grades["1Tom"] }
运行结果如下图:
2、Map集合中key的泛型不能是Java基本数据类型的包装类,否则EL表达式无论使用哪种方式都无法获取到相应的value。示例代码如下:
<%
Map<Integer,String> grades = new HashMap<Integer,String>();
grades.put(100, "Tom");
grades.put(70, "Lucy");
request.setAttribute("grades", grades);
%>
<!-- 输出Map集合中Tom的分数 -->
${grades.100 }//由于key为数值型,所以不能使用这种方式,运行会报错。
${grades['100'] }//由于key为Integer类型,所以无法获取数据
${grades["100"] }//由于key为Integer类型,所以无法获取数据