Icefaces: ActionListeners multiples pour le bouton de commande
-
19-09-2019 - |
Question
Est-il possible d'avoir plusieurs ActionListeners sur un bouton de commande?
Dans le cas contraire est-il un moyen de contourner cela?
Merci pour votre aide!
La solution
Non, vous ne pouvez ajouter deux méthodes de rappel côté serveur:
-
actionListener
et -
action
.
<ice:commandButton action="#{bean.navigateTo}" actionListener="#{bean.doSomething}"/>
actionListener
doit pointer vers une méthode publique qui renvoie void
et prend un ActionEvent comme argument. Il est généralement utilisé pour des tâches qui ne sont pas liées à une logique de navigation et a l'avantage, pour vous fournir l'ancien et le nouveau (= changé) valeur du contrôle. Cela est logique particulier dans les contrôles d'entrée comme des cases à cocher.
action
doit pointer vers une méthode publique qui renvoie un String
sans prendre aucun argument. La méthode fera tout ce qui est nécessaire pour la navigation - par exemple une validation supplémentaire (si elle n'a pas été traitée par certains JSF validateur de base). Le résultat doit correspondre aux règles de navigation de faces-config.xml
.
Cela devrait vous donner suffisamment de possibilités pour gérer des tâches multiples (qui je suppose est votre raison d'avoir plusieurs actionListener) dans votre logique de serveur.
En outre, si vous devez faire seulement certaines tâches côté client, vous pouvez profiter de plusieurs sur * propriétés JavaScript.
Référence: ICEfaces composants personnalisés Taglib