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 :

invalidation de session


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lkryss
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut invalidation de session
    Bonjour,

    J'ai actuellement une page en php qui appelle une page (A) en jsf avec différents paramètres passé en get. Cette page A me permet de sélectionner des options qui seront utilisé dans une page B (jsf aussi).

    B utilise un composant externe sur lequel j'ai peu de contrôles. j'ai besoin que cette page soit en scope session pour son bon fonctionnement (cette page s'auto appelle parfois).

    Mon problème est que lorsque je passe de A à B la première fois mon affichage des données dans B est bon. Si je retourne sur ma page de sélection (en php) pour refaire le même cheminement mais que je choisis d'autres données alors ce seront toujours les premières données qui seront affichées. (j'espère être clair :/).

    Je voudrais donc invalider ma session jsf à chaque fois que j'arrive sur la page A puis en recréer une.


    méthode appelée lors de la validation de la page A:
    boucle est le bean utilisé par ma page B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    public String valider() {
           [...] //bidouille de données       
     
            FacesContext context = FacesContext.getCurrentInstance();
            ELResolver resolver = context.getApplication().getELResolver();
            ELContext elCtx = context.getELContext();
            Boucles boucle = (Boucles) resolver.getValue(elCtx, null, "boucle");
            boucle.setUrl(this.url);
            return "success";
        }
    méthode en postconstruct de ma page A :
    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() {
     
     
            ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
            HttpServletRequest request = (HttpServletRequest)context.getRequest();
    request.getSession(false).invalidate();
            request.getSession(true);
    [...] //ici recuperation de mes données en get
    }
    J'ai fait la plupart de mes essais dans cette partie postconstruct.

    partie de mon face-config.xml :

    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
     
    (B)
    <managed-bean>
            <description>The JSF application bean (boucle)</description>
            <managed-bean-name>boucle</managed-bean-name>
            <managed-bean-class>myBeans.Boucles</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>  
     
     
        <!-- index.jsp form bean (A)-->   
       <managed-bean>
            <description>Form bean</description>
            <managed-bean-name>formBean</managed-bean-name>
            <managed-bean-class>myBeans.FormBean</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
        </managed-bean>
    j'ai également essayé de passer le scope de A en session mais dans ce cas la mes données ne changent jamais.
    Lorsque A reste en request il est également appelé lorsque je charge B (bien que pas utilisé ?!) il va donc invalider la session et ne passera aucune donnée dans ce cas la.

    Si vous avez des idées je suis preneur merci

    edit : précision : je n'utilise aucun système de login pour ces 2 pages.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Je suis pas rodé sur le @PostConstruct de jsf, mais si c'est le bean de session que tu nous montre, forcément l'appel postconstruct n'est fait qu'une seule fois. Pourquoi tu ne ferais pas appel à ta méthode de réinitialisaiton dans une action JSF? Ca résoudrais ton problème non? (Appel A, Appel B, Appel A, action "reset form", Appel B, ....)

  3. #3
    Membre confirmé
    Homme Profil pro
    Expert MDE
    Inscrit en
    Janvier 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 183
    Par défaut
    Salut,

    Essaies quelque chose dans ce genre avant ton formulaire de choix, ça permettra de faire le vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FacesContext fc = FacesContext.getCurrentInstance();
    fc.getExternalContext().getSessionMap().remove("monSessionBean");

  4. #4
    Membre confirmé Avatar de lkryss
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    merci pour vos idées.

    @tchize_ : pardon pour le manque de précision le post construct porte sur FormBean (qui la est en request). Sinon je n'ai pas de reset form, lorsque l'user est sur B il peut y rester longtemps, ses actions ne pourrait l'amener qu'a recharger cette page.

    @Tcharl : j'ai aussi essayé de faire cela dans le postConstruct de A , mais comme A est en request, il est apparemment appelé à chaque page (si ce n'est pas le fonctionnement normal alors je ne l'explique pas :/), ce qui me fait perdre mes données quand je passe de A à B.

  5. #5
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    ton probleme n'est pas lier a la session , mais a l'initialisation de tes donnes, tu devrais pas le faire lors de la construction du bean , mais lors de l'appele a la page.
    je te conseille de le faire dans un phase listner sur la phase RENDER_RESPONSE
    ou si tu veux fascilier les chose pour toi regarde ce projet :http://jsf-comp.sourceforge.net/comp...oad/index.html

  6. #6
    Membre confirmé Avatar de lkryss
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Ok je vais y jeter un œil.
    Merci

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

Discussions similaires

  1. invalider une session en JSF
    Par amarmama dans le forum JSF
    Réponses: 4
    Dernier message: 29/04/2008, 19h46
  2. Invalider une session
    Par seb0005 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 19/11/2006, 20h18
  3. Réponses: 2
    Dernier message: 14/09/2006, 08h57
  4. [struts] invalidation de session
    Par rocco dans le forum Struts 1
    Réponses: 16
    Dernier message: 25/06/2004, 15h40
  5. [JSP] probleme d'invalidation de session
    Par Jovial dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 04/06/2004, 15h27

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