Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSTL、bean和方法调用_Java_Exception_Jsp_Jstl_Vignette - Fatal编程技术网

Java JSTL、bean和方法调用

Java JSTL、bean和方法调用,java,exception,jsp,jstl,vignette,Java,Exception,Jsp,Jstl,Vignette,我正在开发一个JSP,在这里我需要对来自Bean的对象调用方法。该页面的早期版本没有使用JSTL,并且工作正常。我的新版本有如下设置: <jsp:useBean id="pageBean" scope="request" type="com.epicentric.page.website.PageBean" /> <c:set var="pageDividers" value="<%= pageBean.getPageDividers() %>" /> <

我正在开发一个JSP,在这里我需要对来自Bean的对象调用方法。该页面的早期版本没有使用JSTL,并且工作正常。我的新版本有如下设置:

<jsp:useBean id="pageBean" scope="request" type="com.epicentric.page.website.PageBean" />
<c:set var="pageDividers" value="<%= pageBean.getPageDividers() %>" />
<c:set var="numColumns" value="${pageDividers.size()}" />

变量
pageDividers
是一个
列表
对象

我遇到了这个问题:当我询问
pageDivider
的大小时,抛出了一个异常。我知道这是一个简单的JTSL错误——我做错了什么

错误消息是:

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


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

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

${pageDividers.size}
注意编号()


编辑:抱歉…在原始帖子中出错。

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


为了访问列表大小,JSTL提供了fn:length函数,如

${fn:length(pageDividers)}
注意,为了使用fn名称空间,您应该如下声明它

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


此外,同一函数可用于任何集合类型,也可用于字符串。

请小心。我在Websphere 6.12中遇到了一个模糊的错误——在标记体中执行JSTL函数时发生了这个错误。这在WebSphere6.13+中是固定的,但不低于6.13。当我们使用6.11时,我们实际上必须为我们使用的函数创建自定义标记,并将其委托给实际代码。这太糟糕了。他们为什么不让你使用类/实例本身来调用方法呢!?你在JEE平台上遇到各种虫洞。。。ffs!