【问题标题】:get the value of a List.size() in a JSP page? [duplicate]获取 JSP 页面中 List.size() 的值? [复制]
【发布时间】:2016-03-04 17:36:25
【问题描述】:

这是一个简单的问题,我应该知道答案,但我很惭愧地承认我不知道。我正在向我的 JSP 页面发送一个复合对象:

public class MyObject {
    private List<MyFoo> myFoo;
    public getMyFoo();
    public setMyFoo();
}

// In the controller...
model.addAttribute("myObject", myObject);

当它进入 JSP 页面时,我可以将 myObject 的模型实例寻址为:

${myObject}

和里面的列表为

${myObject.myFoo}

想要做的是在我的 JSP 输出中列出 myFoo 的大小,如下所示:

${myObject.myFoo.size}

当然 size() 不是 bean 属性,所以会抛出 JSPException。

在 JSP 页面中是否有一种简单、优雅的方式来执行此操作,或者我是否需要在模型上粘贴另一个属性并将大小放入其中?

【问题讨论】:

  • 你可以试试 ${myObject.myFoo.size()}。自 EL 2.2 起支持方法调用

标签: java jsp


【解决方案1】:

一种合理(但可能不够优雅)的方法是添加一个 getter 函数:

public getMyFooSize() { return myFoo.size(); }

然后在JSP中使用如下:

${myObject.myFooSize}

【讨论】:

  • 这就是我最终所做的。可能并不完美,但确实解决了问题。
  • @user1071914 但是为什么不使用 Matt 提出的方法呢?它似乎更优雅。
  • 我已经完成了更改并签入、工作和测试。如果项目结束有时间,也许我会回去更新它。
  • 这肯定是一个丑陋的组合,但有时这是唯一可行的选择(至少我发现)。我遇到的主要用例是使用 JSTL 动态生成 javascript 时。当您有一个开放的 javascript 数组 [ 或 object { 字符并且不允许您使用“fn”、
【解决方案2】:

您可以使用 JSTL 标记库,它们通常对常见的 JSP 操作很有用。这是一个快速参考: https://code.google.com/p/dlcode/downloads/detail?name=jstl-quick-reference.pdf

在这一行中包含标签库:

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

那么你的情况是:

${fn:length(myObject.myFoo)}

【讨论】:

  • 天啊!谢谢,我一直忘记那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
相关资源
最近更新 更多