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 :

Stockage d'un bean en session


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut Stockage d'un bean en session
    Bonjour,

    Je débute en J2EE / JSF2 et je voulais comprendre comment fonctionne le stockage de beans en session.

    Je souhaite stocker un profil utilisateur (infos utilisateurs, droits d'accès etc...) dans ma session afin d'éviter de multiples accès en base.

    voila mon managedBean:

    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
    50
    51
    52
    53
    54
    55
     
     
    package bean;
     
    import java.util.List;
     
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.servlet.http.HttpServletRequest;
     
    import viacham.bo.AdmRole;
    import viacham.bo.RelUserPole;
    import viacham.bs.UtilisateurBS;
     
    @ManagedBean
    @SessionScoped
    public class ProfilUtilisateur {
     
    	UtilisateurBS utilisateurBS = new UtilisateurBS();
    	private AdmRole admRole;
    	private List<RelUserPole> listUserPole;
     
     
    	/** Creates a new instance of ProfilUtilisateur */
        public ProfilUtilisateur() {
        }
     
        private HttpServletRequest getRequest() {
    		FacesContext facesContext = FacesContext.getCurrentInstance();
    		ExternalContext externalContext = facesContext.
                             getExternalContext();
    		Object request = externalContext.getRequest();
    		return request instanceof HttpServletRequest ? 
                            (HttpServletRequest) request : null;
    	}
     
        public AdmRole getAdmRole() {
        	admRole = utilisateurBS.ficheAdmUtilisateur(getRequest().getUserPrincipal().getName());
    		return this.admRole;
    	}
     
    	public void setAdmRole(AdmRole admRole) {
    		this.admRole = admRole;
    	}
     
    	public List<RelUserPole> getListUserPole() {
    		listUserPole = utilisateurBS.listePoleUtilisateur(getRequest().getUserPrincipal().getName());
    		return listUserPole;
    	}
     
    	public void setListUserPole(List<RelUserPole> listUserPole) {
    		this.listUserPole = listUserPole;
    	}
    et voila l'affichage d'une info depuis une page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Profil: <h:outputText value="#{profilUtilisateur.admRole.desRole}"/>
    jusque la, tout va bien mais la console me signale ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ATTENTION: JSF1063 : AVERTISSEMENT ! Définition d'une valeur d'attribut non-sérialisable dans HttpSession (clé : profilUtilisateur, classe de la valeur : bean.ProfilUtilisateur).
    en ajoutant "implements java.io.Serializable" à mon managedBean, plus de message mais est-ce la solution ?
    En vérifiant si mes données sont bien en session, je me rend compte qu'a chaque actualisation de ma page, ma méthode ficheAdmUtilisateur() (qui va chercher les infos en base) est sollicité !
    Est ce que le @SessionScoped fonctionne vraiment ?
    Quelle est la bonne pratique ?

    merci pour vos réponses

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ouii il faut mettre ton objet serializable,
    le scope session est approprié pour gérer l'authentification d'un utilisateur.
    Par contre, il n'est pas conseillé de mettre des appels à la base de données dans des getters, car, ils sont appelés plusieurs fois lors du rendu de la page.
    un getter doit juste rendre une valeur pas de calcul métier ou autre.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    merci pour ces infos,
    Comment procéder alors pour appeler une seul fois ma méthode ficheAdmUtilisateur() et pour l'affficher sur ma page ?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    par exemple dans le constructeur, tu initialise tes objets, dans une action avant l'utilisation de ses objets...

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 41
    Par défaut
    ça marche ! Merci Sniper37

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

Discussions similaires

  1. probleme managed bean en session
    Par *alexandre* dans le forum JSF
    Réponses: 4
    Dernier message: 11/12/2008, 13h19
  2. probleme de recuperation de bean en session
    Par aymenroma dans le forum JSF
    Réponses: 5
    Dernier message: 04/06/2008, 10h42
  3. bean et session
    Par rupteur dans le forum JSF
    Réponses: 2
    Dernier message: 01/08/2007, 16h13
  4. [POO] Stockage de référence objet en session
    Par starn2000 dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h35
  5. [J2EE] Bean de session et fenêtre multiple.
    Par Radium133 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/06/2006, 14h17

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