JSTL,Bean和方法调用

我正在开发一个JSP,我需要调用来自Bean的对象的方法。 该页面的先前版本不使用JSTL,它可以正常工作。 我的新版本有这样的设置:

 <c:set var="pageDividers" value="" />  

变量pageDividers是一个List对象。

我遇到了这个问题:当我要求pageDivider的大小时,会抛出exception。 我知道这是一个简单的JTSL错误 – 我做错了什么?

错误消息是:

未指定默认命名空间时,函数大小必须与前缀一起使用

如何正确访问或调用pageDividers对象的方法?

在JSTL中使用点运算符进行属性访问时, ${pageDividers.size} (需要no () )会导致调用名为getSize()的方法。
由于java.util.List提供了一个名为size() (而不是getSize() )的方法,因此您将无法使用该代码访问列表长度。


为了访问列表大小,JSTL提供了fn:length函数,使用方式如下

 ${fn:length(pageDividers)} 

请注意,为了使用fn命名空间,您应该按如下方式声明它

 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 

此外,相同的function可以与任何集合类型一起使用,也可以与字符串一起使用。

要使用EL访问bean的属性,只需命名属性(不调用方法)。 那么假设你在bean中有一个名为getSize()的方法

 ${pageDividers.size} 

注意没有()。

编辑:对不起…在原帖中发了错误。