在JSP中通过变量访问hashmap值
我有一个hashmap,它被放在请求中:在JSP中通过变量访问hashmap值,jsp,hashmap,el,Jsp,Hashmap,El,我有一个hashmap,它被放在请求中: HashMap<Integer, String> myMap = ... request.setAttribute("myMap", myMap); HashMap myMap=。。。 setAttribute(“myMap”,myMap); 在JSP中,我有一个foreach循环 <c:forEach items="${list}" var="item" varStatus="status"> <c:out va
HashMap<Integer, String> myMap = ...
request.setAttribute("myMap", myMap);
HashMap myMap=。。。
setAttribute(“myMap”,myMap);
在JSP中,我有一个foreach循环
<c:forEach items="${list}" var="item" varStatus="status">
<c:out value="${item.description}"/>
<c:out value="${myMap[item.id]}"/>
</c:forEach>
但是
${myMap[item.id]}
不起作用。如何通过item.id
变量访问hashmap的值?在EL中,数字被视为长的
。将您的Map
更改为Map
,它就会工作。我认为bean的id属性不是包装器对象(整数id;
)。请查看第页的文档
来自JavaDoc的文本
注意:如果发生以下情况,必须非常小心
可变对象用作贴图关键点。
未指定映射的行为
如果对象的值已更改
以影响平等的方式
对象是键时的比较
在地图上。这是一个特例
禁止是因为它不是
允许地图包含
它本身就是一把钥匙。尽管如此
允许地图包含
作为一种价值观,极端谨慎是必要的
建议:equals和hashCode
方法不再在上定义良好
一张这样的地图
Item.java
package com.me;
public class Item {
private Integer id;
private String description;
public Item() {
}
public Item(Integer id, String description) {
this.id = id;
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
JSP代码段
<%
HashMap<Integer, String> myMap = new HashMap<Integer, String>();
myMap.put(new Integer(1), "One");
myMap.put(new Integer(2), "Two");
myMap.put(new Integer(3), "Three");
request.setAttribute("myMap", myMap);
List<com.me.Item> list=new ArrayList<com.me.Item>();
list.add(new com.me.Item(1,"A - Desc"));
list.add(new com.me.Item(2,"B - Desc"));
list.add(new com.me.Item(3,"C - Desc"));
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="item" varStatus="status">
<c:out value="${item.description}"/>
<c:out value="${myMap[item.id]}"/>
</c:forEach>
您可以将键值放在
Java
侧的映射中,并使用JSP
页面上的JSTL
访问相同的键值,如下所示:
先前的java 1.7:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Map<String, String> map = new HashMap<>();
map.put("key","value");
<c:out value="${map['key']}"/>
Map Map=newhashmap();
地图放置(“键”、“值”);
Java1.7及以上版本:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Map<String, String> map = new HashMap<>();
map.put("key","value");
<c:out value="${map['key']}"/>
Map Map=newhashmap();
地图放置(“键”、“值”);
JSP代码片段:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Map<String, String> map = new HashMap<>();
map.put("key","value");
<c:out value="${map['key']}"/>
HashMap是否有特殊情况,因为我尝试了这个
${applicationscope.coursesHT[anotherbean.courseC]}
来获取课程描述,但它不起作用,但当我使用c:set
和c:out
时,它起作用了!!:)谢谢