IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Appeler plusieurs méthodes à partir de d'une Action


Sujet :

JSF Java

  1. #1
    Membre très actif
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut Appeler plusieurs méthodes à partir de d'une Action
    salut les amis
    je veux savoir comment appeler plusieurs méthodes à partir de action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:commandButton value="Valider" action="#{....}"  />
    et aussi c'est quoi la différence entre action et actionListener ?

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    salut

    1 - non ... mais rien n'empêche ta méthode d'appeler d'autres méthodes
    2 - l'action, va renvoyer une "cible" de navigation, la méthode d'ailleurs renvoyer String. l'actionListener n'est que sorte de "hook", d'ailleurs elle ne renvoie rien. JSF n'attend rien en retour si ce n'est qu'elle ne génére pas d'exception. Tu peux effectivement combiner actionListener et action sans problème mais ce ne sont pas des méthodes de même signature ni déclencher en parallèle ... d'abord le actionListener, puis l'action si la première s'est bien passé ...


    et puis y'a un endroit pas mal sur internet où on peut aussi trouver quelques réponses à ce sujet

    http://www.google.fr/search?q=differ...actionListener


    et puis la fonction recherche de ce forum marche bien aussi :
    http://www.developpez.net/forums/d63...ctionlistener/

  3. #3
    Membre très actif
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    Citation Envoyé par fxrobin Voir le message

    1 - non ... mais rien n'empêche ta méthode d'appeler d'autres méthodes

    oui mais comment faire pour appeler à partir d'un bean la méthode d'un autre bean ??

  4. #4
    Membre à l'essai
    Homme Profil pro
    Concepteur architecte en informatique
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur architecte en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut
    salut,
    il suffit d'injecter un bean ds un autre.

    essaye de voir de ce coté:
    http://netbeans.org/kb/docs/javaee/cdi-inject.html
    http://netbeans.org/kb/docs/javaee/cdi-intro.html

  5. #5
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Tout à fait, neo640 a raison, mais je pense qu'utiliser @ManagedProperty de JSF serait plus facile.


    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    @ManagedBean
    class MonBeanNumeroUn
    {
       @ManagedProperty(value="#{monBeanNumeroDeux}")
       MonBeanNumeroDeux autreBean;
     
       public String actionBean()
       {
            // TODO : faire le boulot du Bean 1
            //
     
            String retourAutreBean = autreBean.actionBean();
     
            // ok mais on retourne quoi ?
            // ici on décide de retourner la "décision de  navigation de l'autre Bean
     
            return retourAutreBean;
       }
    }

  6. #6
    Membre très actif
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    merci les amis pour l'aide j'ai essayé la solution de fxrobin et ça marche bien

  7. #7
    Membre très actif
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    mais il y a un probleme si monBeanNumeroDeux n'est pas encore crée (n'est pas encore appelé à partir d'une page jsf (xhtml)), comment faire dans ce cas ??

  8. #8
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Il sera créé automatiquement et mis automatiquement dans le bon scope.
    Donc aucun problème.

    j'utilse ces injections sur toutes mes applications, c'est fait pour ça donc aucun problème.

  9. #9
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    si tu veux obtenir le même résultat, sans annotation mais en utilisant les API JSF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class JsfUtils
    {
         /**
         * Méthode qui permet d'obtenir l'instance d'un bean managé par JSF 
         * au moyen d'une expression EL. 
         *
         * @param <T> 
         *    type paramétré générique
         * @param elExpression 
         *    expression EL. Ex : "#{secondBean}"
         * @param type 
         *     classe de l'instance managée par JSF
         * @return 
         *     instance managée par JSF
         *
         * @author fxrobin
         * @version 1.0
         */
        public static <T> T getManagedBean(String elExpression, Class<T> type)
        {
            FacesContext context = FacesContext.getCurrentInstance();
            return (T) context.getApplication().evaluateExpressionGet(context, elExpression, type);
        }
    }
    Cette méthode s'utiliserait de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SecondManagedBean = JsfUtils.getManagedBean("#{secondManagedBean}", SecondManagedBean.class);
    La seule contrainte, c'est qu'il faut qu'il y ait un contexte JSF rattaché au Thread courant.

    En effet, à la compilation, rien n'empêcherait d'appeler cette méthode statique dans une méthode "public static void main(String... args)", mais celle ci (si elle était déclenchée) ne ferait pas partie d'un contexte d'exécution JSF. On obtiendrait alors dans ce cas une RuntimeException.

  10. #10
    Membre très actif
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    Il sera créé automatiquement et mis automatiquement dans le bon scope.
    Donc aucun problème.
    ça marche aussi pour moi mais j'avais un probléme si le bean commence par une majuscule (ViewdossierBean ) ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@ManagedProperty(value="#{Viewdossier}")
    	Viewdossier ViewdossierBean ;
    pourtant ce code marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@ManagedProperty(value="#{Viewdossier}")
    	Viewdossier viewdossierBean ;
    je crois qu'avec JSF il faut bien suivre les norme de nomage des beans, je suis pas sure, en tout cas un grand merci à vous fxrobin.

  11. #11
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    ah oui les majuscules / minuscules sont importantes.

    mais on peut forcer le nom d'un bean à celui qu'on veut (même si je n'aime pas trop ça)

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @ManagedBean(name="MON_BEAN");
    public class MyBean
    {
     
    }
    pour faire référence à ce bean : #{MON_BEAN}

    De rien en tout cas pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2015, 12h06
  2. Appel de méthode et données d'une Arraylist
    Par codronpa dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 01/04/2014, 14h50
  3. Réponses: 4
    Dernier message: 05/10/2009, 16h19
  4. [Thread] appel de méthodes non-synchronized dans une méthode synchronized
    Par dr23fr dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 24/06/2008, 23h47
  5. appeler plusieurs fonctions à partir d'une checkbox
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/05/2005, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo