在JSP中使用Integer键访问HashMap <long,string>不再起作用</long,string>

时间:2014-02-27 21:33:23

标签: java jsp jstl el stripes

这段代码以前运行良好,但我刚刚彻底检查了很多底层Java代码,现在它已经不再适用了。我有一个值为bean的bean:

<c:forEach items="${actionBean.appliedJobs}" var="aJob" varStatus="loop">
    ${aJob}
</c:forEach>

打印出来:14513=APPLIED 14535=APPLIED 14515=APPLIED 14514=APPLIED。 appliedJobs在Java中填充为HashMap<Long, String>。我也有使用变量类型为jobId来访问此数组的代码。

${jobId} //This prints correctly as 14513
${actionBean.appliedJobs[jobId]} //Prints nothing, is likely null
${actionBean.appliedJobs[14513]} //This prints correctly as APPLIED

上面块中的第三行打印正常,因为我认为14513被解释为Long。我知道herehere所描述的Long / Integer jstl问题,但这段代码过去的事实就是让我失望的事实。

编辑:目前,我已经为jobId创建了一个getter(),它返回一个Long jobId而不是Integer jobId并且已经绕过了这个问题,但我仍然想知道根本原因。

1 个答案:

答案 0 :(得分:-1)

您可以执行以下操作来迭代Map的所有元素:

 <c:forEach items="${actionBean.appliedJobs}" var="aJob" varStatus="loop">
            ${aJob.value}
            ${aJob.key}
 </c:forEach>