我认为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
不起作用吗?有没有更好的方法来测试数组或列表的大小?
由于
答案 0 :(得分:1)
${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时,它返回字符串中的字符数。