Jsf : passer des parametres dans la session

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

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.