Hello,
Je fais face a plusieurs problemes avec la methode dispatch() que j'utilise dans mon appli JSF.
Quand l'utilisateur se connecte sur l'appli, il arrive tjrs la 1iere fois sur la jsp main.jsp.
Dans la method init(), celle-ci verifie que certaines valeurs dans le bean application et dans le bean session, et en fonction de cela redirige vers la page correcte:
Mon probleme, c'est que j'ai quelques effets de bord indesirables:
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 getApplicationBean1(); getSessionBean1(); getRequestBean1(); if (!getRequestBean1().getCanDisplayPmonGui()) { try { FacesContext facesContext = FacesContext.getCurrentInstance(); facesContext.getExternalContext().dispatch("./ErrorPage.jsp"); facesContext.renderResponse(); } catch (Exception e) { TraceManager.TrException(e); } } else if (getApplicationBean1().getIsClusterEnabled()) { try { FacesContext facesContext = FacesContext.getCurrentInstance(); facesContext.getExternalContext().dispatch("./Cluster2.jsp"); facesContext.renderResponse(); } catch (Exception e) { TraceManager.TrException(e); } } else { try { FacesContext facesContext = FacesContext.getCurrentInstance(); facesContext.getExternalContext().dispatch("./Page1.jsp"); facesContext.renderResponse(); } catch (Exception e) { TraceManager.TrException(e); } }
- j'ai du code javascript qui devrait etre appele sur le onload de la page1.jsp qui n'est jamais appele, alors que le javascript apparait bien dans la source HTML genere au client.
Afin de prevoir les cas de refresh() directement sur la page1.jsp, j'ai du egalement rajoute une redirection dans le init(), redirection qui n'est jamais appele (ouf) sauf si un petit malin a fin un start/stop de Tomcat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <ui:body binding="#{Page1.body1}" id="body1" onLoad="refresh()" style="-rave-layout: grid">
Ca ne fonctionne pas et en examinant les traces de mon application je remarque que:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 if (!getRequestBean1().getCanDisplayPmonGui()) { try { FacesContext facesContext = FacesContext.getCurrentInstance(); facesContext.getExternalContext().dispatch("./ErrorPage.jsp"); facesContext.renderResponse(); } catch (Exception e) { TraceManager.TrException(e); } } else {....}
* init() page1.jsp est appele
* init() errorPage.jsp
* prerender() errorPage.jsp
* destroy() errorPage.jsp
* destroy() page1.jsp
* prerender page1.jsp
A ce matin la, j'ai 2 comportement, suivant le projet fait avec Java Studio creator ou Netbeans 5.5
- avec JSC: exception dans le web browser mais qui n'apparait ni dans les traces de l'appli, ni dans Catalina.out
- avec netbeans, exception dans le prerenderer() lorsque l'appli tente l'appel a getSessionBean1() avec un null pointer, l'exception est catchee mais elle empeche manifestement la page error page de bien s'afficher....
Merci de m'avoir lu jusqu'au bout, et j'aimerais vraiment connaitre vos impressions...
Partager