java - JSTL、Bean 和方法调用

标签 java exception jsp jstl vignette

我正在开发一个 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 错误——我做错了什么?

错误信息是:

The function size must be used with a prefix when a default namespace is not specified

如何正确访问或调用我的 pageDividers 对象的方法?

最佳答案

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

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

关于java - JSTL、Bean 和方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227500/

相关文章:

java - pip和npm有什么区别?

java - 当读取文件试图确定有效成绩时,为什么文件读取器会跳行?

java - 如果 JNDI 数据源连接为空,抛出什么异常?

java - 如何在 JSP 页面中生成带有嵌入代码的可重用模板内容?

java - Android:是否应该以异步方式访问应用程序中的数据库?

.net - 在运行时获取 OutofMemoryException 消息 "Insufficient memory to continue the execution of the program"

c++ - 如何处理 libstdc++ 跨执行边界抛出异常

java - 尝试使用相同的 ajax 调用取消关注时,关注/取消关注按钮不起作用

java - 将java字符串加载到本地存储中

java - 使用 Roslyn 从 C# 分析到 Java 分析