JSTL、Bean 和方法调用

发布于 2024-07-07 00:50:23 字数 635 浏览 6 评论 0原文

我正在开发一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鱼忆七猫命九 2024-07-14 00:50:24

要使用 EL 访问 bean 的属性,您只需命名该属性(而不是调用该方法)。 假设您在 bean 中有一个名为 getSize() 的方法,然后

${pageDividers.size}

注意没有 ()。

编辑:抱歉...在原始帖子中犯了一个错误。

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.

旧伤还要旧人安 2024-07-14 00:50:23

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

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

When using the dot operator for property access in JSTL, ${pageDividers.size} (no () needed) results in a call to a method named getSize().
Since java.util.List offers a method called size() (rather than getSize()) 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

${fn:length(pageDividers)}

Note that in order to use the fn namespace, you should declare it as follows

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

In addition, the same function can be used with any collection type, and with Strings too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文