Cómo el valor de la pantalla de Lista#size() en EL JSF?

Me gustaría saber si hay una manera de enlazar el valor devuelto de un método en un componente JSF.
Voy a explicarme mejor.
Digamos que tengo una clase como esta:

public class Document {
   private List<Attachment> attachments;
   //getter and setter here
}

esta clase está expuesto a jsf a través de un registrada bean gestionado en una propiedad llamada currentDocument, y se utiliza en una jsf esta manera

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

Esto no es correcto, lo sé. Pero ¿cuál es la manera correcta de hacerlo?
Se supone que tengo que crear un atributo en la clase de Documento, digamos numberOfAttachments, y se unen a los que, o hay una manera de enlazar directamente en un valor devuelto del método?

  • usted puede utilizar #{myManagedBean.currentDocument.los archivos adjuntos.size()} para el tamaño de la visualización de lista.
InformationsquelleAutor themarcuz | 2011-08-19

1 Kommentar

  1. 27

    Si usted está ejecutando una EL 2.2 capaz de contenedor (Tomcat 7, Glassfish 3, JBoss COMO 6 o posterior, todos la implementación de Servlet 3.0), o el uso de JBoss EL, entonces usted debería ser capaz de invocar la no-métodos getter por EL:

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

    Una alternativa es el uso de JSTL fn:length():

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

    Si nada de eso es posible para usted, por alguna razón, entonces su mejor apuesta es crear una función EL mismo

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

    o para agregar un método getter para #{myManagedBean} que devuelve exactamente eso.

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

    Véase también:

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea