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 :

Comment mieux gerer Les scopes Sessions et les sessions HTTP


Sujet :

JSF Java

  1. #1
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut Comment mieux gerer Les scopes Sessions et les sessions HTTP
    bonjour
    J'ai un souci sur la compréhension je sais que les scopes @Application ou @Session sont là pour gerer les cycles de vie des Beans.

    Mais j'ai un cas pratique.j'ai Un Etablissement dont le controller @ViewScoped et j'ai les User aussi @ViewScoped.

    Maintenant lors de la connection je verifie l'authenification des users et j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("sessionuser", user);
    Mais je voudrais que tous les users une fois connecté utilise un seule établissement.
    Alors je ne sais pas si je dois juste mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("etabActif", etablissements);
    ou alors utiliser aussi le @ApplicationScoped.

    Je precise que l'etablissement est manipulé dans tous le système.Je veux une explication sur la bonne utilisation de Scopes et variables http et surtout celles applicatives.

    Cordialement

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,à mon avis tu complexifies les choses plus qu'elles en ont l'air.De manière générale pour partager un ensemble d'objets entre plusieurs écrans ou ManagedBeans, je déclare en scopeSession un managedBean dans lequel j'insère toutes mes valeurs qui seront partagés, (ou plusieurs) et dans chaque controleur quand j'ai besoin d'accéder à ses valeurs pour modifier ou lire, je fais appel à mon managedBean en session tout simplement.Récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FacesContext fc = FacesContext.getCurrentInstance();
    MonBean bean = (MonBean) fc.getExternalContext().getSessionMap().get( "nomDuBeanDansFacesConfig");

  3. #3
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut
    Merci de l'explication

    mais Quand est t-il de l'appel par exemple en appellant un bean managé avec @ManagedProperty dans un autre.

  4. #4
    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
    cela te sert d´appeler un managed bean dans un autre managed bean par exemple:
    class A
    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
     
    import java.io.Serializable;
     
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
     
    @ManagedBean
    @SessionScoped
    public class A implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	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";
    	}
     
    }
    et la classe B
    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
    @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";
    	}
    
    }
    la classe B utilise une propertie a, qui est notre bean managed. il lui faut a tout prix un setter.

    Voila.
    Eric

  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
    @ManagedProperty vous permet d'utiliser les propriétés d'un Mbean dans un autre

Discussions similaires

  1. Lister les disques durs USB, les clés ainsi que les appareils photos
    Par infosam76 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 25/02/2015, 23h26
  2. Réponses: 55
    Dernier message: 10/07/2012, 10h14
  3. Réponses: 0
    Dernier message: 27/07/2009, 15h28
  4. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27
  5. Comment bien gerer la mémoire avec les TStringList?
    Par david_chardonnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/06/2003, 09h57

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