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
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
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"; }
J'ai fait la plupart de mes essais dans cette partie postconstruct.
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 }
partie de mon face-config.xml :
j'ai également essayé de passer le scope de A en session mais dans ce cas la mes données ne changent jamais.
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>
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 preneurmerci
edit : précision : je n'utilise aucun système de login pour ces 2 pages.
Partager