14

Bean から取得したオブジェクトのメソッドを呼び出す必要がある JSP に取り組んでいます。ページの以前のバージョンは 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()}" />

変数pageDividersListオブジェクトです。

この問題が発生しています:pageDividerのサイズを要求すると、例外がスローされます。これは単純な JTSL エラーであることはわかっています。何が間違っているのでしょうか?

エラーメッセージは次のとおりです。

デフォルトの名前空間が指定されていない場合は、関数のサイズを接頭辞とともに使用する必要があります

pageDividersオブジェクトのメソッドに正しくアクセスまたは呼び出すにはどうすればよいですか?

4

2 に答える 2

27

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" %>

さらに、同じ関数を任意のコレクション型で使用でき、文字列でも使用できます。

于 2008-10-22T21:08:58.260 に答える
2

To access the property of a bean using EL you simply name the property (not invoke the method). So lets say you have a method called getSize() in the bean then

${pageDividers.size}

Notice no ().

EDIT:Sorry...made an error in the original post.

于 2008-10-22T20:53:32.847 に答える