Jsf : passer des parametres dans la session

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 958 fois - Téléchargée 16 fois

Contenu du snippet

Cette source montre comment ont peut enregistrer des paramètres dans la session utilisateur (coté client) en jsf.

J'ai pris l'exemple dans lequel on souhaite enregistrer le nom et l'age d'un utilisateur dans la session. En général, on enregistre dans la session une connexion vers une base de données, des informations sur l'utilisateur...

Pour fonctionner cette source a besoin de la librairie Servlet.

Source / Exemple :


import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession; 

/** 
 * <b>UtilitaireSession est une classe qui permet d'enregistrer et de récupérer
 * des paramètres dans la session sur le poste de travail de l'utilisateur</b>
 * 
 * @author Julien 
 * @version 2.0 
 */
public class UtilitaireSession {

    /** L'instance de Session */
    private static final UtilitaireSession instance = new UtilitaireSession();
    
    /** Identifiant de la variable nom dans la session */
    private final String NOM_UTILISATEUR = "NOM";
      
    /** Identifiant de la variable age dans la session */
    private final String AGE_UTILISATEUR = "AGE";
      
    /**
     * Constructeur prive du singleton 
     */
    private UtilitaireSession(){
        super();
    }
    
    /**
     * Fonction permettant de recuperer l'instance de Session 
     * @return l'instance de Session 
     */
    public static UtilitaireSession getInstance() {
        return instance;
    }
    
    /** 
     * Fonction qui vérifie le contexte 
     * @return vrai si le contexte permet de recuperer une session 
     */
    private boolean isContextOk(FacesContext fc){
        return fc!=null && fc.getExternalContext()!=null 
            && fc.getExternalContext().getSession(false)!=null;
    }
    
    /**
     * Fonction qui recupere une session à partir du faces context 
     */
    private HttpSession getSession(FacesContext fc){
        return (HttpSession) fc.getExternalContext().getSession(false);
    }
    
    /** 
     * Fonction qui permet de recuperer un objet dans la session 
     * @param cle 
     *  La cle de l'objet a recuperer 
     * @return l'objet correspondant 
     */
    private Object get(String cle){
        FacesContext fc = FacesContext.getCurrentInstance();   
        Object res = null;
        if(isContextOk(fc)){
        res = getSession(fc).getAttribute(cle);
        }
        return res;
    }
    
    /** 
     * Procedure qui permet d'enregistrer une variable dans la session 
     * @param cle 
     *  La cle qui permet d'identifier la varaible dans la session 
     * @param valeur 
     *  La valeur a enregistrer 
     */
    private void set(String cle, Object valeur){
        FacesContext fc = FacesContext.getCurrentInstance();
        if(fc !=null && fc.getExternalContext()!=null){
        getSession(fc).setAttribute(cle, valeur);
        }
    }
    
    /** 
     * Procedure qui permet d'enregistrer l'age dans la session 
     * @param age 
     *  L'age a enregistrer 
     */
    public void setAge(int age){
        set(AGE_UTILISATEUR, age);
    }
    
    /** 
     * Fonction qui permet de recuperer l'age dans la session 
     * @return l'age 
     */
    public int getAge(){
        return ((Integer)get(AGE_UTILISATEUR));
    }
    
    /** 
     * Procedure qui permet d'enregistrer le nom dans la session 
     * @param nom 
     *  Le nom a enregistrer 
     */
    public void setNom(String nom){
        set(NOM_UTILISATEUR, nom);
    }
    
    /** 
     * Fonction qui permet de récupérer le nom dans la session 
     * @return le nom a recuperer 
     */
    public String getNom(){
        return ((String)get(NOM_UTILISATEUR));
    }

}

A voir également

Ajouter un commentaire Commentaires
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Bonjour,

Pour cela, il faut que tu initialise la variable de ton managedBean avec la valeur de la variables dans la session.

private String valeurAAfficher;

public ManagedBean(){
valeurAAfficher=UtilitaireSession.getInstance().get("Variable");
}

public String getValeurAAfficher(){
return valeurAAfficher;
}

Et tu affiche #{managedBean.valeurAAfficher} dans la page jsf
Messages postés
13
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
28 février 2012

Bonjour,
@Julien39,
Merci pour ta source. Mais s'il te plait, pourrais-tu nous indiquer comment faire appel à cet utilitaire pour affiche par exemple la valeur d'une variable de session dans une page jsf?
Merci d'avance
Messages postés
25
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
25 juillet 2013
1
je vois maintenant ..
merci pour tout.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Je ne vois pas ce que signifie support managed bean...

En tout cas, cette classe n'est pas un managed bean, elle ne décris pas les éléments de la vue. Je la place dans mes projets au niveau de la vue (puisqu'elle est liée à jsf) dans un package util.
Messages postés
25
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
25 juillet 2013
1
ma question serait donc la suivante : comment comptes tu utiliser cette classe
comme:
- backing managed bean ?
- controller managed Bean ?
- Model managed bean?
- support managed beans ?
- autres..

c'est quand même bien d'avoir une session, mais l'utiliser dans un contexte precis , avec un role precis est quand même important.
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.