一尘不染

JSTL和 HashMap不起作用

jsp

在servlet中,我有:

HashMap eventsByDayNo = new HashMap();
eventsByDayNo.put (new Integer(12), "day 12 info");
eventsByDayNo.put (new Integer(11), "day 11 info");
eventsByDayNo.put (new Integer(15), "day 15 info");
eventsByDayNo.put (new Integer(16), "day 16 info");

request.setAttribute("eventsByDayNo", eventsByDayNo);
request.setAttribute("daysInMonth", new Integer(31));

在一个jsp中,我有:

<c:forEach var="dn" begin="1" end="${daysInMonth}" step="1" varStatus="status">
  Day Number=<c:out value="${dn}" /> Value=<c:out value="${eventsByDayNo[dn]}" /><br>
</c:forEach>

上面的JSTL可以正常工作,但是如果我尝试抵消日期编号<c:out value="${eventsByDayNo[dn+3]}" />
,则不会打印任何哈希表条目。关于为什么不的任何答案?

以上只是我实际应用的概念证明。


阅读 187

收藏
2020-06-10

共1个答案

一尘不染

我的猜测是dn+3类型为java.lang.Double,而不是java.lang.Integer(您可能期望)。

<ul>
<c:forEach var="dn" begin="1" end="${daysInMonth}" step="1">
  <li>
    <c:set var="dnplus3" value="${dn+3}" />
    dn=<c:out value="${dn}" />
    dnplus3=<c:out value="${dnplus3}" />
    class=<c:out value="${dnplus3.class.name}" />
  </li>
</c:forEach>
</ul>
2020-06-10