假设存在一个名为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>
答案 0 :(得分:2)
您发布(和编辑)的代码在语法上是有效的,因此问题出在其他地方。
首先,Id
后缀让我觉得它实际上是Number
。事实上,EL中的非十进制数默认为long
。因此,如果它是Map<Integer, Integer>
,则此代码将不起作用。您需要Map<Long, Long>
或Map<Long, Integer>
才能使其发挥作用。
我不确定我应该如何解释你的“编码恐怖应用程序”的措辞,但我敢打赌你已经知道使用JSTL SQL taglib用于除快速原型之外的其他目的被认为是一种非常糟糕的做法;)该逻辑属于真实数据访问层中的Java类。