通过变量索引访问散列元素

Access hash element by variable index

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

<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 注入组合的语法是什么?

<c:forEach>beginend 被解释为 java.lang.Integer,但您的地图键被创建为 java.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>,或者改用 List<String>

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

${it.amounts[month]}