【问题标题】:Get value from hashmap based on key to JSTL根据 JSTL 的键从 hashmap 中获取值
【发布时间】: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} 是请求属性中设置的映射。

标签: java jsp hashmap jstl


【解决方案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; 获取值(来自:stackoverflow.com/a/924556/2594961
      猜你喜欢
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 2020-02-16
      • 2016-02-15
      • 1970-01-01
      相关资源
      最近更新 更多