在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]}" /> ,则不会打印任何哈希表条目。关于为什么不的任何答案?
<c:out value="${eventsByDayNo[dn+3]}" />
以上只是我实际应用的概念证明。
我的猜测是dn+3类型为java.lang.Double,而不是java.lang.Integer(您可能期望)。
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>