首页 > 解决方案 > 通过变量索引访问哈希元素

问题描述

我将 12 个相同的 HTML 表单控件重构为循环内的一段代码。我不能只循环表单,因为每月值可能存在也可能不存在,所以我month在 1-12 范围内构建了一个变量(到目前为止一切都很好):

<c:forEach var="month" begin="1" end="12">
    Month #<c:out value="${month}"/>
</c:forEach>

现在我需要从两个哈希图中访问项目:

HashMap<Long, String> amounts
HashMap<String, String> invalidFields

旧的“静态”语法是:

<c:out value="${it.amounts[1]}"/>
<c:out value="${it.invalidFields.amount_1}"/>

注入组合的语法是什么month

标签: jspjstlel

解决方案


和of被解释为begin,但您的映射键被创建为。end<c:forEach>java.lang.Integerjava.lang.Long

Integer int1 = new Integer(1);
Long long1 = new Long(1L);
System.out.println(int1.equals(long1)); // false

所以Map#get()永远不会为这些键工作。

将您amounts的改为Map<Integer, String>改为,或使用 aList<String>代替。

无论哪种方式,您都可以使用:

${it.amounts[month]}

推荐阅读