【问题标题】:How to display value of List#size() in JSF EL?如何在 JSF EL 中显示 List#size() 的值?
【发布时间】:2011-10-30 12:51:30
【问题描述】:

我想知道是否有办法将方法的返回值绑定到 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,然后绑定到该属性上,还是有办法直接绑定到方法的返回值上?

【问题讨论】:

  • 您可以使用#{myManagedBean.currentDocument.attachments.size()} 来显示列表的大小。

标签: jsf binding jsf-2 el


【解决方案1】:

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

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

另一种方法是使用JSTL fn:length()

<html xmlns:fn="http://java.sun.com/jsp/jstl/functions" ...>
...
<h:outputText value="#{fn:length(myManagedBean.currentDocument.attachment)}" />

如果由于某种原因这些都不可能,那么最好的办法是自己创建一个 EL 函数

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

或向#{myManagedBean} 添加一个额外的getter 方法,该方法会完全返回。

<h:outputText value="#{myManagedBean.currentDocumentAttachmentSize}" />

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2010-12-28
    • 2013-04-27
    相关资源
    最近更新 更多