JSTL,Bean和方法调用
问题描述:
我正在研究一个JSP,我需要调用来自Bean的对象的方法。该页面的以前版本不使用JSTL,它可以正常工作。我的新版本有一个设置是这样的:JSTL,Bean和方法调用
<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
是List
对象。
我遇到了这个问题:当我询问pageDivider
的大小时,会引发异常。我知道这是一个简单的JTSL错误 - 我做错了什么?
的错误信息是:
功能尺寸必须与时默认命名空间中没有指定
如何正确地访问或拨打我pageDividers
对象的方法的前缀使用?
答
当使用JSTL中,${pageDividers.size}
属性访问点运算符(不()需要)导致对名为getSize()
方法的调用。
由于java.util.List提供了一个名为size()
(而不是getSize()
)的方法,您将无法使用该代码访问列表长度。
为了访问列表大小,JSTL提供FN:长度功能,使用像
${fn:length(pageDividers)}
注意的是,为了使用FN命名空间,你应该声明它如下
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
此外,相同的功能可以用于任何集合类型,并与Stri也是。
答
要使用EL访问bean的属性,只需简单命名该属性(不调用该方法)。因此,假设你在bean中有一个名为getSize()的方法,那么
${pageDividers.size}
注意no()。
编辑:对不起......在原帖中发生了错误。
This Works,thanks! – 2008-10-22 21:14:40