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 :

Détruire un bean session JSF


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Par défaut Détruire un bean session JSF
    Comment est-il possible de détruire complètement un bean session pour un instancier un nouveau?
    J'aimerais en fait utiliser cela à la déconnexion des membres de mon application et les ramener à la page de login.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    utilise acegi pour ca

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Par défaut
    Hum... j'ai regardé rapidement, ça me semble bien compliqué à intégrer sur mon appli existante (je n'ai jamais utilisé Spring)... Y'a pas moyen de faire plus simple avec une méthode purement JSF?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    hm c est pourtant le plus pratique pour la gestion des users et autres

    désolé je ne connais pas de méthodes pour destroyé un bean

  5. #5
    Membre confirmé Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    Pourquoi ne pas te contenter de vider ce session bean ? ou bien d'yajouter une variable boolean 'estConnecte' ?
    Tu ne devrais pas gérer la destruction des session bean, ton serveur d'application est là pour ça.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Par défaut
    J'ai justement déjà un attribut estConnecte que je passe à false à la deconnexion... Mais si quelqu'un derrière se connecte avec un autre login, il se retrouve avec tous les autres attributs de l'ancienne 'session'!

    Je vais faire ça, vider 'à la main' mon session bean.

  7. #7
    Membre confirmé Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    Donc si j'ai bien compris, tu as un unique session bean qui gère toutes tes connexions utilisateurs.
    Dans ce cas tu dois associer le booléen estConnecte à chaque utilisateur.
    Chaque fois qu'un utilisateur se connecte, il ajouté à une liste d'utilisateur dans ton SB et ta classe utilisateur a un attribut estConnecte. C'est un exemple.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Par défaut
    Hi,

    Supposons que tu as une bean du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <managed-bean>
        <managed-bean-name>eventCtrl</managed-bean-name>
        <managed-bean-class>...</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
      </managed-bean>
    Pour le supprimer (passe une valeur null ) de la session ou le ressetter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void setEventCtrlInSession(EventController evtCtrl) {
    		if (evtCtrl != null) {
    			getSessionMap().put("eventCtrl", evtCtrl);
    		}
    		else {
    			getSessionMap().remove("eventCtrl");
    		}
    	}

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Je ne suis pas sur de tout avoir compris mais si ton problème se limite à réinstancier un managed-bean, procède de la sorte:

    Supposons que ton managed-bean se nomme "monBean" et que la classe associé est "MonBean":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FacesContext ctx = FacesContext.getCurrentInstance();
    Application app = ctx.getApplication();
    ValueBinding vb = app.createValueBinding("#{monBean}");
     
    vb.setValue(getFacesContext(), new MonBean());

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 31

  11. #11
    Membre averti
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Bon j'avais le même problème que toi mais la réponse de SEMPERE Benjamin est bonne.
    Mais j'ai une deuxième question concernant les beans en session.
    En utilisant la méthode de SEMPERE Benjamin, je crée un nouveau bean de type "MonBean" est ce que peut-on avoir plusieurs objet en session du même type?
    Comme nous avons crée un nouveau bean de type MonBean et qu'il en existait déjà un, j’ai vu qu'il a donc écrasé l'ancien. Je pense donc qu'on ne peut pas avoir plusieurs bean en session d'un même type.
    Êtes-vous d'accord?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    Si c'est juste pour de la deconnexion avec effacement des bean en session pourquoi pas tout simplement http://java.developpez.com/faq/jsf/?...#ASTUCE_logout

  13. #13
    Membre averti
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Oui c'est vrai cette methode peux marcher je vais la tester, mais est ce quelqu'un peut repondre a ma question :
    Peut on avoir plus bean en session d'un meme type???

  14. #14
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Oui, la différenciation se fait par nom (que tu choisis) et non pas par type.

  15. #15
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    Le fait de pouvoir avoir plusieurs beans instanciés m'intéresse également , mais que veux tu dire par différenciation par nom ??

    Merci

  16. #16
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par egrazian Voir le message
    Le fait de pouvoir avoir plusieurs beans instanciés m'intéresse également , mais que veux tu dire par différenciation par nom ??

    Merci
    Je veux dire qu'on peut avoir 75478632421 instances du même type dans la session, du moment qu'ils ont des noms différents.
    Une session peut être assimilé à un Map<String, Object>, où un objet quelconque peut être stocké sous un nom donnée.

    Pareil pour les managed beans de JSF : tu peux créer plusieurs instances du même type de managed bean si tu spécifies des noms différents.

  17. #17
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    Oui, je crois que je comprends, les managed beans peuvent etre instanciés comme des classes java normales ?

    mais lorsque tu dis :

    Pareil pour les managed beans de JSF : tu peux créer plusieurs instances du même type de managed bean si tu spécifies des noms différents
    ce que j'aimerais savoir, c'est à quel niveau le nom d'un managed bean est défini ... dans faces-config ?

  18. #18
    Membre averti
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Tout à fait dans le face-config un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <managed-bean> 
            <managed-bean-name>NOM DU BEAN</managed-bean-name>
            <managed-bean-class>package.MaClasse</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

  19. #19
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    OOk .. aussi simplement ? ^^

    En fait, je posais cette question car je souhaite faire qqchose dans un projet mais du coup je ne sais pas si cela est possible. Je m'explique :

    J'ai un bean Compétence, relié à une table d'une base de données, et à un moment, je souhaite que l'utilisateur puisse en créer autant qu'il le désire, mais j'aurais besoin de garder tous les beans de ces compétences crées instanciés, car ensuite je vais les utiliser ..

    Mais la déclaration dans le faces config , que permet elle ?

Discussions similaires

  1. Session Bean et JSF
    Par tmanta7 dans le forum JSF
    Réponses: 7
    Dernier message: 08/04/2010, 10h35
  2. Rafraîchir une jsp avec bean session perdu ; )
    Par stongolm dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/02/2007, 13h44
  3. Détruire une variable session
    Par tiyolx dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2006, 18h59
  4. [Struts] Recuper une référence d'un bean session
    Par nicoo dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/09/2005, 14h26
  5. [Servlet - JSP] bean session sous was
    Par piwai dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/08/2005, 10h00

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