日期:2014-05-17  浏览次数:20863 次

JSP关于读取map集合的问题
<%
  List<Message> list=biz.findAllMessage(); //这里的list有一个属性值:1,2,3,....(属性名为:sen)
  Map<Integer,UserInfo> m=biz.findAllUser(); //这里的Map值-键: 1-对象,2-对象,3-对象,....
  request.setAttribute("messages",list);
  request.setAttribute("userInfos",m);
%>
<c:forEach var="mes" items="${requestScope.messages}" varStatus="status">
  <c:set var="asd" value="${mes.sen}" scope="page"></c:set> //这里的mes.sen已经确定值为:2
  ${requestScope.userInfos[asd]} //这里读不了值

  ${requestScope.userInfos[${mes.sen}]} //这个方法报错

  ${requestScope.userInfos[mes.sen]} //这个方法也没有值
</c:forEach>


请问这样可以读出Map的值?是否一定要再嵌入一个循环?

在这个问题里卡了很久!在此先谢谢大家~!

------解决方案--------------------
${requestScope.userInfos.get('Key值')}这样就可以得到个键对应的value
------解决方案--------------------
楼主你上面用jstl取得的asd是string类型的,用${requestScope.userInfos[asd]}取已知map中key时可以取得valu值的,只是你的map中key是integer类型,而asd是string类型的取不出来,

还有一点jstl默认把数字封装成Long类型。即使你用${requestScope.userInfos[1]}也是取不到值的
你可以参考一下http://blog.csdn.net/moreorless/article/details/6545457