Quelle est la syntaxe pour appeler list.size() dans un modèle Facettes JSF 2.0 (par exemple, en utilisant un élément h: outputText)?Comment appelez-vous List.size() à partir d'un modèle Facelets JSF 2.0?
Répondre
Que diriez-vous ceci:
<h:outputText value="#{fn:length(someBean.someList)}" />
Vous aurez besoin de faire référence à la functions
taglib dans votre page JSF (URI: http://java.sun.com/jsp/jstl/functions
).
Ce n'est pas un problème avec JSF 2.0 exactement. La spécification JSF nécessite toujours une classe conforme à la spécification du bean. Les classes de collection ne le font pas avec la méthode .size()
. Il devrait toujours être .getSize()
. Étant donné le besoin d'un moyen "standard" pour accéder aux valeurs de la classe, nous n'allons pas contourner cela dans JSF de sitôt. Quelqu'un a besoin de réparer les classes de collection.
IC ... J'espérais qu'ils avaient retravaillé la syntaxe d'expression pour permettre les appels de méthodes. Il pourrait être abusé, mais il serait facile de contourner les cas comme celui-ci. :) Je ne comprends toujours pas pourquoi le designer de la collection a choisi de faire les choses de cette façon. – jsight
Juste essayer #{myBean.myList.size()}
Cela ne fonctionnerait pas avec el standard. Il existe cependant des extensions el (comme jboss el) qui permettent cette notation. –
Cela fonctionnera sur n'importe quel serveur d'application Java EE 6 – Lincoln
Apparemment, ce n'est pas le cas (à mon grand étonnement): voir http://community.jboss.org/thread/173971 – Kawu
Note: L'espace de noms exacte pour "fn" est ajouté comme ceci:
<html xmlns="http://www.w3.org/1999/xhtml"
...
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
double possible: http://stackoverflow.com/questions/206161/jsf- list-length – seth
@seth - Bien que cela contienne une réponse raisonnable (qui devrait fonctionner avec JSF 2.0, bien que la réponse l'ait précédé), je pose cette question spécifiquement pour savoir s'il y a des mises à jour de JSF 2.0 qui pourraient affecter la solution. :) – jsight