如何在JSF EL中显示List#size()的值?
我想知道是否有办法将方法的返回值绑定到JSF组件中。 我会更好地解释我自己。 假设我有一门课是这样的:如何在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
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)}" />
另见:
<h:outputText value="#{my:size(myManagedBean.currentDocument.attachment)}" />
<h:outputText value="#{myManagedBean.currentDocumentAttachmentSize}" />