这段代码以前运行良好,但我刚刚彻底检查了很多底层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。我知道here和here所描述的Long / Integer jstl问题,但这段代码过去的事实就是让我失望的事实。
编辑:目前,我已经为jobId创建了一个getter(),它返回一个Long jobId而不是Integer jobId并且已经绕过了这个问题,但我仍然想知道根本原因。
答案 0 :(得分:-1)
您可以执行以下操作来迭代Map的所有元素:
<c:forEach items="${actionBean.appliedJobs}" var="aJob" varStatus="loop">
${aJob.value}
${aJob.key}
</c:forEach>