根据 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' 是您尝试为其提取值的字符串键。

【讨论】:

这应该是公认的答案,但请注意缺少引号 &lt;c:out value="$map['key']"/&gt; 这就是我的地图的样子 key1=23, key2=1, key3=0。使用上面的代码时出现此错误: javax.el.PropertyNotFoundException: Property 'key1' not found on type java.util.HashMap$Node 如果keyInteger 的类型,那么您应该使用&lt;c:out value="$map[(1).intValue()]"/&gt; 获取值(来自:***.com/a/924556/2594961)

以上是关于根据 JSTL 的键从 hashmap 中获取值的主要内容,如果未能解决你的问题,请参考以下文章

根据指定的键从集合中创建键值对集合

根据键从数组中获取值

Map接口

根据键名从 HashMap 获取字符串值

获取 HashMap 中具有“某个值”之类的键的键列表

如何获取 HashMap 中特定值的键? [复制]