【问题标题】:EL get value of a HashMap by Integer keyEL 通过 Integer 键获取 HashMap 的值
【发布时间】:2016-03-16 14:11:44
【问题描述】:

我有这个 HashMap:

    Map<Integer, String> odometerMap = new LinkedHashMap<Integer, String>();
    odometerMap.put(0, getLocaleForKey("drop-down.any"));
    odometerMap.put(1, "< 1000");
    odometerMap.put(2, "1000 - 5000");
    odometerMap.put(3, "5000 - 10000");
    odometerMap.put(4, "10000 - 20000");
    odometerMap.put(5, "20000 - 30000");
    odometerMap.put(6, "30000 - 40000");
    odometerMap.put(7, "40000 - 60000");
    odometerMap.put(8, "60000 - 80000");
    odometerMap.put(9, "> 80000");

我在 JSP 中的目标是打印例如 ${odometerMap[2]}(结果为空字符串):

    <c:out value="${odometerMap[2]}"/>

如果我只打印 ${odometerMap} 我会得到完整的地图:

{0=Any, 1=< 1000, 2=1000 - 5000, 3=5000 - 10000, 4=10000 - 20000, 5=20000 - 30000, 6=30000 - 40000, 7=40000 - 60000, 8=60000 - 80000, 9=> 80000}

如何只打印我选择的元素?例如:2?

谢谢

【问题讨论】:

  • odometerMap 是作用域(页面、请求、会话、应用程序)对象吗?

标签: jsp jstl el


【解决方案1】:

另一种方法是使用String 作为键

Map<String, String> odometerMap;

.. 和:

<c:out value="${odometerMap['2']}"/>

但是,最好使用 ListStrings,因为您的密钥没有任何明确的含义:

List<String> odometers = new ArrayList<String>();
odometers.add(getLocaleForKey("drop-down.any"));
// etc

.. 和:

<c:out value="${odometers[2]}"/>

【讨论】:

    【解决方案2】:

    在 EL 中,数字被视为Long。它正在寻找Long 密钥。如果您使用 Long 而不是 Integer 作为映射键,它将起作用。

    Map<Long, String> odometerMap = new LinkedHashMap<Long, String>();
    odometerMap.put(0L, getLocaleForKey("drop-down.any"));
    odometerMap.put(1L, "< 1000");
    // ...
    

    【讨论】:

      猜你喜欢
      • 2015-04-19
      • 1970-01-01
      • 2016-07-07
      • 2021-12-03
      • 1970-01-01
      • 2011-04-27
      • 2014-06-17
      • 1970-01-01
      相关资源
      最近更新 更多