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 :

Communication entre deux Magnaged Bean


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de wiss85
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut Communication entre deux Magnaged Bean
    Bonjour ,

    je suis débutant avec jsf .j'arrive a résoudre les problème et trouver des solutions mais je cherche le bon pratique de cet framework (Best Practice) .

    voici la situation :

    j'ai une datatable de produit lors de double Click sur une ligne je veux afficher les détailles .
    donc j'ai besoin d'une deuxième page ainsi un autre bean pour chercher les détails relative au produit sélectionné avec leur id .

    code de Bean qui affiche le Tableau de produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public String showDetails(){
    		Produit selectedProduct=(Product) getDataTable().getRowData();
    		HttpSession session =
    			(HttpSession) FacesContext.getCurrentInstance().getExternalContext()
    			.getSession(true);
                    session.setAttribute("idSelectedProduct",selectedDomain.getId());
    		return "show";
    }
    dans le deuxième Bean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    @PostConstruct
    	public void init(){
    		HttpSession session =
    			(HttpSession) FacesContext.getCurrentInstance().getExternalContext()
    			.getSession(true);
     
    		String id=session.getAttribute("idSelectedProduct").toString(); // récupérer l'id pour chercher les détails relative au produit  
     
    	}
    cette méthode fonctionne sans problème et sans erreur

    est ce que je respecte le bon pratique de jsf ??
    si non merci de me donner une solution

    Cordialement

  2. #2
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Bonjour

    ça pourairai t'aidé:
    donc dans le but de réutiliser une propriété d'un autre ManagedBen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        @ManagedProperty(value = "#{ManagedBenQueJeRéutiliser}")
        private TypeManagedBenQueJeRéutiliser ManagedBen;
    a partir de la tu peut accédés son instance

    a tester (j'ai un collège qu'il lui là utiliser)

  3. #3
    Membre éprouvé Avatar de wiss85
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut
    Merci pour la réponse
    mais j'utilise jsf 1.2 qui utilise les beans de spring .
    l'annotation "@ManagedProperty" n'existe pas

    j'ai besoin de récupérer l'id de produit dans le deuxième bean .

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Par défaut
    Dans ton fichier de conf, tu fais ceci :

    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
     
    <managed-bean>
      <managed-bean-name>otherBean</managed-bean-name>
      <managed-bean-class>org.simplicity2k.OtherBean</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
     
    <managed-bean>
      <managed-bean-name>homeBean</managed-bean-name>
      <managed-bean-class>org.simplicity2k.HomeBean</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
        <property-name>otherBean</property-name>
        <value>#{otherBean}</value>
      </managed-property>
    </managed-bean>
    ce qui injectera le otherBean dans le homeBean, ne pas oublier de le déclarer dans la classe HomeBean comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private OtherBean otherBean;
     
    public getOtherBean() {
        return otherBean;
    }
     
    public setOtherBean(OtherBean otherBean) {
        this.otherBean = otherBean;
    }
    en sachant que dans l'absolu seul le setter est nécessaire pour l'injection, libre à toi de créer le getter si tu as besoin de le récupérer ultérieurement.

  5. #5
    Membre éprouvé Avatar de wiss85
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut
    Merci simplicity2k

    mais cette méthode m'a posé beaucoup de problème
    par contre j'ai trouvé une autre solution il me parait qu'il respecte le bon pratique de jsf

    voici le code :

    FacesUtil.java :
    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
     
    package net.balusc.util;
     
    import javax.faces.context.FacesContext;
     
    public class FacesUtil {
     
        // Getters -----------------------------------------------------------------------------------
     
        public static Object getApplicationMapValue(String key) {
            return FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(key);
        }
     
        // Setters -----------------------------------------------------------------------------------
     
        public static void setApplicationMapValue(String key, Object value) {
            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(key, value);
        }
     
    }
    Bean 1 :
    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
     
    package mypackage;
     
     
    import net.balusc.util.FacesUtil;
     
    public class MyBean1 {
     
        // Actions -----------------------------------------------------------------------------------
     
        public void action() {
            String value = "value1";
            FacesUtil.setSessionMapValue("MyBean1.value", value);
        }
     
    }
    Bean 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package mypackage;
     
    import net.balusc.util.FacesUtil;
     
    public class MyBean2 {
     
        // Actions -----------------------------------------------------------------------------------
     
        public void action() {
            String value = (String) FacesUtil.getSessionMapValue("MyBean1.value");
        }
     
    }

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Par défaut
    Si c'est BalusC qui l'a dit, alors certainement, mais en théorie tu dois passer par le faces-config.xml pour le faire.

    Après rien ne t'empêche d'y accéder comme ça ...

Discussions similaires

  1. Communication entre deux applets?
    Par Danny Blue dans le forum Windows
    Réponses: 1
    Dernier message: 31/03/2006, 12h43
  2. Communication entre deux Executables ?
    Par QAYS dans le forum Langage
    Réponses: 8
    Dernier message: 11/05/2005, 14h41
  3. communication entre deux executables
    Par semenzato dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 22h19
  4. Communication entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 13
    Dernier message: 28/01/2005, 09h14
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

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