Invoquer des méthodes directes ou des méthodes avec des arguments / les variables / paramètres dans EL
Comment puis-je en JSF 2.0 invoquer des méthodes directes ou des méthodes avec des arguments /les variables /paramètres dans EL?
Par exemple, l'obtention de la taille de la liste dans EL:
<h:outputText value="#{bean.list.size()}" />
Ou l'invocation d'une méthode d'action avec des arguments:
<h:commandButton value="edit" action="#{bean.edit(item)}" />
Cela ne semble pas fonctionner dans mon environnement. Il ne semble pas comme des parenthèses.
javax.el.ELException: Erreur d'Analyse: #{bean.liste.size()}
com.soleil.el.analyseur.ParseException: Rencontre "("
- en double? stackoverflow.com/questions/206161
Vous devez vous connecter pour publier un commentaire.
Dans la norme EL avant EL 2.2 à partir de Java EE 6 vous ne pouvez pas invoquer directement des méthodes comme
#{bean.method()}
ni invoquer des méthodes avec des arguments comme#{bean.method(arg1, arg2)
.Si la mise à niveau vers un EL 2.2 /Java EE 6 est conforme conteneur (Tomcat 7, Glassfish 3, JBoss as, 6, etc) n'est pas une option et que vous utilisez actuellement EL 2.1 /Java EE 5 (Tomcat 6, Glassfish 2, JBoss as, 4, etc), alors votre meilleur pari est d'installer JBoss EL. JBoss EL EL 2.1 mise en œuvre conforme qui prend en charge les mêmes caractéristiques que EL 2.2. L'installation de JBoss EL est une question de mettre le
jboss-el.jar
dans/WEB-INF/lib
et en ajoutant ce qui suit à laweb.xml
, en supposant que vous utilisez Mojarra:Ou, lorsque vous êtes à l'aide de MyFaces:
Une alternative pour votre cas particulier est d'utiliser JSTL est
fn:length
:Une autre alternative est d'ajouter un getter pour le haricot qui renvoie
List#size()
ou, dans certains cas spécifiques, un personnalisé EL fonction.Veuillez noter donc que l'invocation de méthodes avec des arguments à l'EL n'est pas un JSF 2.0 fonctionnalité spécifique. C'est un EL 2.2 fonctionnalité spécifique. EL 2.2 est une partie de Java EE 6, qui JSF 2.0 est aussi de la partie. Donc, il ressembler un JSF 2.0 fonctionnalité spécifique, mais il ne l'est pas. JSF 2.0 est compatible avec Servlet 2.5 /EL 2.1, qui ne dispose pas de cette fonctionnalité. D'autre part, JSF 1.x est la transmet compatible avec Servlet 3.0 /EL 2.2, il serait également possible d'utiliser cette fonctionnalité dans JSF 1.x puis, également à l'aide de JBoss EL sur Servlet 2.5 /EL 2.1.
ui:repeate
avec une requête ajax? Voir : stackoverflow.com/questions/12884049/...BalusC la réponse est correcte, cependant, lorsque vous utilisez maven, vous devez exclure el-api 1.0 dépendance transitive comme ceci: