在单独的JSTL循环中访问Map值

时间:2010-01-23 00:53:43

标签: java jsp map jstl

假设存在一个名为resultSet的查询结果,其字段可用作templateId

此外,地图'templateMap'的密钥为templatedId

我无法从以下内容中获得任何结果,感谢任何帮助。

<c:foreach var="row" items="${resultSet.rows}">
  <c:out value="${templateMap[row.templateId]}" />
</c:foreach>

注意:这是一个编码恐怖应用程序,其中上述结果集是<sql:query>的结果。

以下也不起作用。

<c:foreach var="row" items="${resultSet.rows}">
  <c:set var="tmplId" value="${row.templateId}" />
  <c:out value="${templateMap[tmplId]}" />
</c:foreach>

1 个答案:

答案 0 :(得分:2)

您发布(和编辑)的代码在语法上是有效的,因此问题出在其他地方。

首先,Id后缀让我觉得它实际上是Number。事实上,EL中的非十进制数默认为long。因此,如果它是Map<Integer, Integer>,则此代码将不起作用。您需要Map<Long, Long>Map<Long, Integer>才能使其发挥作用。

我不确定我应该如何解释你的“编码恐怖应用程序”的措辞,但我敢打赌你已经知道使用JSTL SQL taglib用于除快速原型之外的其他目的被认为是一种非常糟糕的做法;)该逻辑属于真实数据访问层中的Java类。