2008-10-22 107 views
14

我正在研究一個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()}" /> 

變量pageDividersList對象。

我遇到了這個問題:當我詢問pageDivider的大小時,會引發異常。我知道這是一個簡單的JTSL錯誤 - 我做錯了什麼?

的錯誤信息是:

功能尺寸必須與時默認命名空間中沒有指定

如何正確地訪問或撥打我pageDividers對象的方法的前綴使用?

回答

27

當使用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也是。

+0

This Works,thanks! – 2008-10-22 21:14:40

2

要使用EL訪問bean的屬性,只需簡單命名該屬性(不調用該方法)。因此,假設你在bean中有一個名爲getSize()的方法,那麼

${pageDividers.size} 

注意no()。

編輯:對不起......在原帖中發生了錯誤。