JSTL、Bean 和方法调用
我正在开发一个 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
是一个 List
对象。
我遇到这个问题:当我询问 pageDivider
的大小时,会引发异常。 我知道这是一个简单的 JTSL 错误 - 我做错了什么?
错误信息是:
未指定默认命名空间时,函数大小必须使用前缀
如何正确访问或调用 pageDividers
对象的方法?
I'm working on a JSP where I need to call methods on object that come from a Bean. The previous version of the page does not use JSTL and it works properly. My new version has a set up like this:
<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()}" />
The variable pageDividers
is a List
object.
I'm encountering this issue: when I ask for pageDivider
's size, an exception is thrown. I know this is a simple JTSL error -- what am I doing wrong?
The error message is:
The function size must be used with a prefix when a default namespace is not specified
How do I correctly access or call the methods of my pageDividers
object?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要使用 EL 访问 bean 的属性,您只需命名该属性(而不是调用该方法)。 假设您在 bean 中有一个名为 getSize() 的方法,然后
注意没有 ()。
编辑:抱歉...在原始帖子中犯了一个错误。
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
Notice no ().
EDIT:Sorry...made an error in the original post.
在 JSTL 中使用点运算符进行属性访问时,
${pageDividers.size}
(不需要 ())会导致调用名为getSize( )
。由于 java.util.List 提供了一个名为
size()
的方法(而不是getSize()
),因此您将无法使用该代码访问列表长度。为了访问列表大小,JSTL 提供了 fn:length 函数,请
注意,为了使用 fn 命名空间,您应该如下声明
它此外,相同的函数可以用于任何集合类型,也可以用于字符串。
When using the dot operator for property access in JSTL,
${pageDividers.size}
(no () needed) results in a call to a method namedgetSize()
.Since java.util.List offers a method called
size()
(rather thangetSize()
) you won't be able to access the list length by using that code.In order to access to a list size, JSTL offers the fn:length function, used like
Note that in order to use the fn namespace, you should declare it as follows
In addition, the same function can be used with any collection type, and with Strings too.