JSP EL numberOfItems属性导致NumberFormatException

时间:2013-12-01 21:58:23

标签: jsp

我认为JSP EL中确定数组属性长度或List属性大小的正确方法是使用numberOfItems属性,如下所示:

<c:if test="${subpages.numberOfItems > 1}">
  ...
</c:if>

至少,这是显示在例如Java 7 EL examples中的内容,但是当我尝试使用它时,我得到:

java.lang.NumberFormatException: For input string: "numberOfItems"

我的subpages属性是一个List,所以如果我用方法调用size()替换numberOfItems,JSP就会按预期工作。知道为什么使用numberOfItems不起作用吗?有没有更好的方法来测试数组或列表的大小?

由于

1 个答案:

答案 0 :(得分:1)

你错误地解释了。来自 Java 7 EL examples

${sessionScope.cart.numberOfItems}

会话范围属性numberOfItems 属性的值购物车。强调我的。

numberOfItems是为属性cart定义的属性,可通过会话访问。


  

是否有更好的方法来测试数组或列表的大小?

是。使用JSTL functions

 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  ....
  <c:if test="${fn:length(subpages) > 1}">
    ...
  </c:if>

虽然java.util.Collection接口定义了一个size方法,但它不符合属性的JavaBeans组件设计模式,因此无法使用JSP表达式语言进行访问。 length函数可以应用于c:forEach支持的任何集合,并返回集合的长度。应用于String时,它返回字符串中的字符数。

相关链接