根据 JSTL 的键从 hashmap 中获取值
Posted
技术标签:
【中文标题】根据 JSTL 的键从 hashmap 中获取值【英文标题】:Get value from hashmap based on key to JSTL 【发布时间】:2013-09-16 09:06:09 【问题描述】:我想根据key获取HashMap
的值。
HashMap<String, ArrayList<String>> map
= new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();
map.put("key", arrayList);
request.setAttribute("key", map);
我所做的是
<c:forEach var="map" items="$requestScope.key">
<c:forEach var="hash" items="$map.value">
<option><c:out value="$hash"/></option>
</c:forEach>
</c:forEach>
但似乎它正在打印所有内容,我想要做的是获取值取决于键,例如:hash.key
或其他东西
更新: 我做了类似的事情,但它仍然不起作用
<c:forEach var="map" items="$requestScope.key">
<c:forEach var="hash" items="$map['key']">
<option><c:out value="$hash"/></option>
</c:forEach>
</c:forEach>
和 StackTrace:Property 'External' not found on type java.util.HashMap$Entry
我很确定确实有这种钥匙。
【问题讨论】:
您可以使用$map["key_name"]
,其中key_name
是字符串键,即map.put("key_name", value)
,您可以简单地使用$map.key
来访问该键。
我尝试过这样做,但我抛出了一个错误,这是堆栈跟踪:Property 'bool' not found on type java.util.HashMap$Entry
你能贴出你所做的代码吗?
所以您只想打印地图的键值 - "key"
?
仅使用内部 foreach 并删除外部 foreach 循环。在项目items="$key['key']"
中使用它,其中$key
是请求属性中设置的映射。
【参考方案1】:
我对上述解决方案有疑问,因为指定字符串键会给我 javax.el.PropertyNotFoundException。下面显示的代码对我有用。在此我使用状态来计算每个循环的索引并显示我感兴趣的索引值
<c:forEach items="$requestScope.key" var="map" varStatus="status" >
<c:if test="$status.index eq 1">
<option><c:out value=$map.value/></option>
</c:if>
</c:forEach>
【讨论】:
【参考方案2】:你能试试下面的代码吗
<c:forEach var="hash" items="$map['key']">
<option><c:out value="$hash"/></option>
</c:forEach>
【讨论】:
【参考方案3】:如果您只想获取地图中单个条目的值,则根本不需要遍历任何集合。稍微简化一下 gautum 的响应,你可以得到一个命名映射条目的值,如下所示:
<c:out value="$map['key']"/>
其中 'map' 是集合,'key' 是您尝试为其提取值的字符串键。
【讨论】:
这应该是公认的答案,但请注意缺少引号<c:out value="$map['key']"/>
这就是我的地图的样子 key1=23, key2=1, key3=0。使用上面的代码时出现此错误: javax.el.PropertyNotFoundException: Property 'key1' not found on type java.util.HashMap$Node
如果key
是Integer
的类型,那么您应该使用<c:out value="$map[(1).intValue()]"/>
获取值(来自:***.com/a/924556/2594961)以上是关于根据 JSTL 的键从 hashmap 中获取值的主要内容,如果未能解决你的问题,请参考以下文章