这是一个简单的问题,我应该知道答案,我很惭愧承认我没有。我正在向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页面中有一种简单,优雅的方法吗?或者我需要在模型上粘贴另一个属性并将大小放在那里?
答案 0 :(得分:8)
您可以使用JSTL标记库,它们通常对常见的JSP操作很有用。这是一个快速参考: https://code.google.com/p/dlcode/downloads/detail?name=jstl-quick-reference.pdf
在此行中包含taglib:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
然后你的案子将是:
${fn:length(myObject.myFoo)}
答案 1 :(得分:1)
一种合理的(但可能不够优雅)方式是添加一个吸气剂功能:
public getMyFooSize() { return myFoo.size(); }
然后在JSP中使用以下内容:
${myObject.myFooSize}