一尘不染

JSTL,Bean和方法调用

jsp

我在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对象的方法?


阅读 175

收藏
2020-06-08

共1个答案

一尘不染

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

另外,同一函数可以用于任何集合类型,也可以用于字符串。

2020-06-08