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
Partager