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 :

Mes beans se téléscopent lorsque j'ouvre une 2e fenetre


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut Mes beans se téléscopent lorsque j'ouvre une 2e fenetre
    Bonjour,

    Contexte : MyFaces 1.1.5 + Tomahawk 1.1.6

    Scénario :
    Dans une fenêtre du navigateur, je travaille sur le dossier d'une personne. J'utilise donc une page avec un managedBean de type "MonBean".
    La classe MonBean est déclaré dans le faces-config.xml en scope request , avec le nom "monBean".

    Dans ma page JSP, j'utilise l'instruction suivante, pour conserver monBean d'une requête sur l'autre :
    <t:saveState value="#{monBean}"/>

    Jusque là, tout va bien, ça marche.

    Sur cette page, j'ai aussi un lien qui ouvre une nouvelle fenêtre du navigateur (avec la propriété target="_blank"), pour travailler sur la même page, mais sur le dossier d'une autre personne.
    Lorsque je clique sur ce lien, j'appelle une méthode qui initialise le bean avec ce 2e dossier :

    MonBean monBean = (MonBean)getBean("monBean");
    monBean.initialiser(id2emePersonne);

    Le problème :
    Le soucis, c'est que quand je récupère "monBean", je récupère en fait l'instance déjà en cours d'utilisation pour mon 1er dossier.
    La nouvelle fenêtre qui s'ouvre s'affiche correctement, initialisée avec le 2e dossier. Les actions sur cette 2e fenêtre se passent bien
    Mais dans la 1e fenêtre, qui est toujours là, si je demande une action, je me retrouve à modifier le dossier de la 2e personne, et non pas le dossier de la 1e personne, car le bean a été réinitialisé avec les données du 2e patient.

    J'espère que mes explications sont claires...

    Quelqu'un saurait-il me dire comment je dois procéder pour regler mon problème ?

    Pour info, j'ai fais un test :
    - si j'ai mon dossier D1 ouvert dans une fenêtre F1
    - que j'ouvre le dossier D2 dans une fenêtre F2, non pas à partir de la fenetre F1, mais depuis une autre fenêtre F0 qui n'utilise pas monBean, dans ce cas mes 2 fenêtres F1 et F2 vivent en parallèle sans se téléscoper.

    Merci d'avance pour votre aide...
    Marine

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    956
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 956
    Par défaut
    Bonjour,

    C'est parce que vous utilisez le même bean dans les deux fenêtres. Deux fenêtres, deux beans!

    Déclarez donc deux beans différents (ce n'est pas un problème si ils utilisent la même classe) et utilisez les chacun dans leur propre fenêtre.

    Au revoir.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    Merci beaucoup pour cette réponse.

    Ca me semble être une bonne piste, mais du coup, j'ai un soucis : les 2 fenêtres utilisent la même page JSP.
    Hors, dans ma page JSP, je fais référence au bean partout avec des #{monBean.maPropriete} et des #{monBean.maMethode}

    Si je déclare 2 beans "monBean1" et "monBean2" tous deux de type "MonBean", comment faire dans ma page JSP ? Ca m'embêterait de devoir faire un copier-coller pour avoir maPage1.jsp et maPage2.jsp qui soient exactement identiques, au nom de bean prêt...

    Merci.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    956
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 956
    Par défaut
    J'avoue ne pas connaitre la réponse à cette question. J'ai fait une recherche sur Google, et le document
    http://bugs.sakaiproject.org/conflue...on?pageId=4981
    a l'air intéressant. (cf chapitre Incremental Generalization with JSF).

    Bonne chance.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    Merci beaucoup pour ce lien. Je pense que ça devrait tout à fait réponde à ma problématique, en créant 2 pages quasi-vides, qui contiennent juste un <t:aliasBean>, et qui incluent la "vraie" page.
    Il n'y a plus qu'à tester ça, maintenant.
    Merci encore, car en plus de régler mon problème (j'espère), j'ai appris l'existence d'un composant qui me semble fort utile...

Discussions similaires

  1. Action > Go to report qui ouvre une nouvelle fenetre
    Par cherkaoui.h dans le forum SSRS
    Réponses: 2
    Dernier message: 20/09/2011, 11h10
  2. [HTML] lien ouvre une nouvelle fenetre
    Par AmineDev9 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/06/2008, 00h01
  3. bouton qui ouvre une petite fenetre
    Par dekams dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/03/2008, 07h24
  4. [debutant] un bouton qui ouvre une fenetre
    Par dous dans le forum Composants
    Réponses: 6
    Dernier message: 21/11/2005, 09h55
  5. Savoir qui ouvre une form
    Par rvzip64 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/07/2004, 16h25

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