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 méthode d'un ManagedBean depuis un autre


Sujet :

JSF Java

  1. #1
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut Appeler méthode d'un ManagedBean depuis un autre
    Bonjour,
    Comme indiqué dans le titre je cherche à appeler une méthode(qui effectue insertion dans la base de données) qui est défini dans un managedbean depuis un autre managedbean.
    Si vous pouvez m'aider ?
    Merci

    Voila mon code :
    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
    @Named(value = "infracteursPMBean")
    @SessionScoped
    public class InfracteursPMBean implements Serializable {
    
        @ManagedProperty(value = "#{gavMB}")
        private GardeavuMBean gavMB;
    
    
        public void creerInfracteur() {
    
            if (this.gardeAVu == true) {
                gavMB.creerGAV();
                refGAV = gavMB.getRefGAV();
            }
        }
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    @Named(value = "gardeavuMBean")
    @SessionScoped
    public class GardeavuMBean implements Serializable {
    
        @EJB
        GardeavuSessionBean emGeGAV;
        private Gardeavu gav;
        private String refGAV;
        private AffaireMetier am;
    
        public GardeavuMBean() {
        }
    
        public Gardeavu getGav() {
            return gav;
        }
    
        public void setGav(Gardeavu gav) {
            this.gav = gav;
        }
    
        public String getRefGAV() {
            return refGAV;
        }
    
        public void setRefGAV(String refGAV) {
            this.refGAV = refGAV;
        }
    
        public void creerGAV() {
            am = new AffaireMetier();
    
            Apurementgav appur = new Apurementgav(apurement);
            Qualiteresponsablegav qual = new Qualiteresponsablegav(qualite);
            this.setRefGAV(am.reference());
    
            gav = new Gardeavu(refGAV);
    
            emGeGAV.persist(gav);
        }
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vu que ton bean s'appelle gardeavuMBean et pas gavMB, c'est

    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
    Named(value = "infracteursPMBean")
    @SessionScoped
    public class InfracteursPMBean implements Serializable {
    
        @ManagedProperty(value = "#{gardeavuMBean }")
        private GardeavuMBean gavMB;
    
    
        public void creerInfracteur() {
    
            if (this.gardeAVu == true) {
                gavMB.creerGAV();
                refGAV = gavMB.getRefGAV();
            }
        }
    Au fait, c'est "garde à vue" par "gardeavu", donc ta classe devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class GardeAVueMBean
    jamais une bonne idée de faire une faute d'orthographe dans un nom de classe ou de ne pas respecter les conventions de nommages

  3. #3
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    Merci, je viens de corriger le nom mais ça ne marche pas toujours

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourriez vous définir "ne marche pas" ?

  5. #5
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    c'est à dire n’exécute pas la méthode creerInfracteur et par suite ne fait pas l’insertion dans la base de données

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si la méthode creerInfracteur n'est pas appelée, c'est soit que tu ne l'a pas reliée correctement à ton action sur ton interface JSF, soit que le formulaire a échoué à la validation (utiliser <h:messages/> pour voir les erreurs de validation)

  7. #7
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    J'ai crée un test mais toujours ça na marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    <h:form>
                        <h:panelGrid columns="2" style="width:500px;height: 200px;">
                            <h:outputLabel value="Nom complet: " />
                            <h:outputText value="#{b.nomComplet}"/>
                        </h:panelGrid>
                    </h:form>
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package ma.MBeans;
     
    import javax.inject.Named;
    import javax.enterprise.context.SessionScoped;
    import java.io.Serializable;
     
    /**
     *
     * @author assma
     */
    @Named(value = "a")
    @SessionScoped
    public class A implements Serializable {
     
        private String nom;
        private String prenom;
     
        public A() {
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public void traitement() {
            nom = "XXXX";
            prenom = "YYYY";
        }
    }
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package ma.MBeans;
     
    import javax.inject.Named;
    import javax.enterprise.context.SessionScoped;
    import java.io.Serializable;
    import javax.faces.bean.ManagedProperty;
     
    /**
     *
     * @author assma
     */
    @Named(value = "b")
    @SessionScoped
    public class B implements Serializable {
     
        @ManagedProperty(value = "#{a}")
        private A a;
     
        private String nomComplet;
     
        public B() {
        }
     
        public String getNomComplet() {
            return nomComplet;
        }
     
        public void setNomComplet(String nomComplet) {
            this.nomComplet = nomComplet;
        }
     
        public A getA() {
            return a;
        }
     
        public void setA(A a) {
            this.a = a;
        }
     
        public String nomComplet() {
            a.traitement();
            return a.getNom()+" "+a.getPrenom();
        }
    }
    Et merci pour votre aide

  8. #8
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    avec ceci ca marche, car tu a omis de mettre ta valeur dans la propertie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html">
    <body>
    <div style="width:100%;font-size:36px;line-height:48px;background-color:navy;color:white">My Facelet Application</div>
      <h:form>
        <h:inputText value="#{b.nomComplet}"/>
        <h:commandButton value="senden" action="#{b.nomComplet}"></h:commandButton>
      </h:form>
    </body>
    </html>
    code bean de la classe B car la classe A reste identique:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    import java.io.Serializable;
     
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ManagedProperty;
    import javax.faces.bean.SessionScoped;
     
    @ManagedBean
    @SessionScoped
    public class B implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	@ManagedProperty(value = "#{a}")
    	private A a;
     
    	private String nomComplet;
     
    	public B() {
    	}
     
    	public String getNomComplet() {
    		return nomComplet;
    	}
     
    	public void setNomComplet(String nomComplet) {
    		this.nomComplet = nomComplet;
    	}
     
    	public A getA() {
    		return a;
    	}
     
    	public void setA(A a) {
    		this.a = a;
    	}
     
    	public String nomComplet() {
    		a.traitement();
    		this.nomComplet = a.getNom() + " " + a.getPrenom();
    		return "test";
    	}
     
    }
    maintenant cela depend de ce que tu veux avoir.

    Eric

  9. #9
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    ça marche bien meeeeeeeeeeerci.
    Mais à quoi sert ce code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static final long serialVersionUID = 1L;

  10. #10
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    aide dans le cas d´une deserialisation, car ceci est sauvegarder avec ce numero de serie, donc une sorte de control de version de la classe. Ici cela n´a pas trop d´importance. Mais bon.
    Eric

  11. #11
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    Mais pour effectuer la transaction ''question au début'' ça n'a pas marché

  12. #12
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    hmm.. j´avoue que je n´ai pas compris ta question.

  13. #13
    Membre confirmé Avatar de azassma
    Femme Profil pro
    Ph.D - Computer Vision
    Inscrit en
    Avril 2012
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ph.D - Computer Vision
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 159
    Par défaut
    dans un MBean j'ai défini une méthode qui effectue l'insertion des valeurs saisies dans la base de données dans l'autre MBean je veux appeler cette méthode pour ne pas charger un seule MBean avec beaucoup de méthodes. Mais bon je crois que je n'ai que cette solution.

Discussions similaires

  1. Threads. Peut-on appeler la méthode d'un thread depuis un autre thread ?
    Par Pierre8r dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 05/12/2008, 11h48
  2. Réponses: 6
    Dernier message: 29/04/2008, 09h34
  3. Réponses: 5
    Dernier message: 23/04/2007, 16h31
  4. Appel procédure d'un package depuis un autre package?
    Par Maglight dans le forum Oracle
    Réponses: 1
    Dernier message: 23/03/2007, 14h14

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