Bonjour,
J'ai une application web avec plusieurs JSP et un managed bean de session, avec des attributs modifies selon les choix dans les formulaires des JSP.
J'ai dans mes JSP des boutons "Back" et "Continue", dont l'action depend des attributs de mon bean. Je les relie donc a une methode de mon bean qui en fonction des attributs renvoie une certaine action a effectuer.
Pour faire plus propre, j'ai voulu mettre toutes ces methodes dans un request bean, qui utiliserait les methodes de mon session bean.
En utilisant ce que j'ai trouve sur internet, voila ce que j'ai ecrit:
mon faces-config.xml:
mon session bean:
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 <managed-bean> <managed-bean-name>StairliftSurvey</managed-bean-name> <managed-bean-class>OrderingSystem.view.StairliftSurvey</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>Navigation</managed-bean-name> <managed-bean-class>OrderingSystem.view.Navigation</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>StairliftSurvey</property-name> <property-class>OrderingSystem.view.StairliftSurvey</property-class> <value>#{StairliftSurvey}</value> </managed-property> </managed-bean>
mon request bean:
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 package OrderingSystem.view; public class StairliftSurvey { public StairliftSurvey() { } private String seat; public void setSeat(String seat) { this.seat = seat; } public String getSeat() { return seat; } }
et enfin dans le JSP ou j'utilise ces beans:
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 package OrderingSystem.view; import javax.faces.context.FacesContext; public class Navigation { public Navigation() { } public String ContinueCarriage () { FacesContext facesContext = FacesContext.getCurrentInstance(); StairliftSurvey stairliftsurvey = (StairliftSurvey)facesContext.getApplication() .createValueBinding("#{StairliftSurvey}").getValue(facesContext); if (stairliftsurvey.getSeat()=="Standard") return "SetWeight"; else return "Continue"; } }
Mais a l'execution, j'ai l'exception suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <af:selectOneRadio label="Seat:" value="#{StairliftSurvey.seat}"> <af:selectItem label="Standard" value="Standard" id="Standard"/> <af:selectItem label="Perch" value="Perch" id="Perch"/> </af:selectOneRadio> ... <af:commandButton text="Continue" action="#{Navigation.ContinueCarriage}"/>
Est-ce que cela veut dire que mon session bean n'est pas instancie? pourtant je l'utilise bien deja dans le meme JSP. Savez-vous d'ou cela peut venir?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 javax.faces.FacesException: #{Navigation.ContinueCarriage}: javax.faces.el.EvaluationException: javax.faces.FacesException: javax.faces.FacesException: Can't set managed bean property: 'StairliftSurvey'. at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78) ...
Merci d'avance,
Romain
Partager