如何在JSF EL中显示List#size()的值?

如何在JSF EL中显示List#size()的值?,jsf,binding,jsf-2,el,Jsf,Binding,Jsf 2,El,我想知道是否有办法将方法的返回值绑定到JSF组件中。 我会更好地解释我自己。 假设我有一门课是这样的: public class Document { private List<Attachment> attachments; //getter and setter here } 公共类文档{ 私人名单附件; //这里是盖特和塞特 } 这个类通过一个名为currentDocument的属性中注册的托管bean向jsf公开,并以这种方式在jsf中使用 <h:out

我想知道是否有办法将方法的返回值绑定到JSF组件中。 我会更好地解释我自己。 假设我有一门课是这样的:

public class Document {
   private List<Attachment> attachments;
   //getter and setter here
}
公共类文档{
私人名单附件;
//这里是盖特和塞特
}
这个类通过一个名为currentDocument的属性中注册的托管bean向jsf公开,并以这种方式在jsf中使用

<h:outputText value="#{myManagedBean.currentDocument.attachment.size}" />

我知道这是不对的。但正确的方法是什么呢?
我应该在Document类上创建一个属性,比如numberOfAttachments,并绑定到该属性,还是有一种方法可以直接绑定到方法的返回值上?

如果您正在运行支持EL 2.2的容器(Tomcat 7、Glassfish 3、JBoss AS 6或更高版本,都实现Servlet 3.0),或者正在使用JBoss EL,然后您应该能够通过EL调用非getter方法:

<h:outputText value="#{myManagedBean.currentDocument.attachment.size()}" />
如果出于某种原因,这些都不可能实现,那么最好的办法就是自己创建一个EL函数

<h:outputText value="#{my:size(myManagedBean.currentDocument.attachment)}" />
另见:
您可以使用#{myManagedBean.currentDocument.attachments.size()}来显示列表的大小。
<h:outputText value="#{my:size(myManagedBean.currentDocument.attachment)}" />
<h:outputText value="#{myManagedBean.currentDocumentAttachmentSize}" />