Bonjour,
Je suis débutant en JSF et j'aimerai utiliser un tabPanel de richfaces dans une de mes applications, mais je n'arrive pas à sauvegarder l'état du composant. (Je ne suis pas sur qu'il s'agisse d'un problème richfaces, c'est peut être aussi un probleme de compréhension générale de JSF de ma part.)
Par exemple:
Je crée une page contenant un tabPanel avec 2 onglets. Le deuxieme onglet (que je selectionne) contient une richfaces dataTable avec un commandButton sur chaque ligne declenchant la navigation sur la page de detail. Sur la page de détail j'ai un commandLink qui déclenche une navigation sur la page principale, mais à chaque fois le premier onglet est sélectionné et non le 2ème.
Je pourrai simplement enregistrer l'index du dernier onglet sélectionné mais il y'a encore des comboBox etc à ajouter et j'aimerai que jsf sauvegarde l'état de la view pour moi comme ça devrait être le cas d'après ma documentation.
J'ai fait le test avec la méthode de sauvegarde "client" et "server" mais sans effet.
J'ai lu quelque part qu'il faut utiliser un backing bean pour sauvegarder le composant mais je n'ai pas trouvé comment faire.
Code de la page de départ a.jsp :
La page de détail b.jsp :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%-- This file is an entry point for JavaServer Faces application. --%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP</title> </head> <body> <f:view > <%@ include file="/WEB-INF/jspf/menu.jspf"%> <rich:tabPanel switchType="server" > <rich:tab label="A" > <h:form> <rich:dataTable value="#{RequestBean1.revendeurs}" var="e" id="showDiv"> <rich:column> <f:facet name="header"> <h:outputText value="Pays"></h:outputText> </f:facet> <h:outputText value="#{e.pays}"></h:outputText> </rich:column> <f:facet name="header"> <h:outputText value="Nom"></h:outputText> </f:facet> <h:outputText value="#{e.nom}"></h:outputText> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Prenom"></h:outputText> </f:facet> <h:outputText value="#{e.prenom}"</h:outputText> </rich:column> </rich:dataTable> </h:form> </rich:tab> <rich:tab label="B"> <h:form> <rich:dataTable value="#{RequestBean1.revendeursPerso}" var="e" > <rich:column> <f:facet name="header"> <h:outputText value="Pays"></h:outputText> </f:facet> <h:outputText value="#{e.pays}"></h:outputText> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Nom"></h:outputText> </f:facet> <h:outputText value="#{e.nom}"></h:outputText> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Prenom"></h:outputText> </f:facet> <h:outputText value="#{e.prenom}"></h:outputText> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Détail"></h:outputText> </f:facet> <h:commandButton action="#{RequestBean1.showDetail}" value="Détail"></h:commandButton> </rich:column> <f:facet name="footer"> <rich:datascroller pageIndexVar="pageIndex" pagesVar="pages"> <f:facet name="pages"> <h:outputText value="#{pageIndex} / #{pages}"></h:outputText> </f:facet> </rich:datascroller> </f:facet> </rich:dataTable> </h:form> </rich:tab> </rich:tabPanel> </f:view> </body> </html>
Mes navigation rules :
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
36
37
38
39
40
41
42
43
44
45
46
47 <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%-- This file is an entry point for JavaServer Faces application. --%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <f:view > <%@ include file="/WEB-INF/jspf/menu.jspf"%> <h:form> <rich:dataTable value="#{RequestBean1.detailsVentePerso}" var="e" rows="2" id="showDiv"> <rich:column> <f:facet name="header"> <h:outputText value="Reference"></h:outputText> </f:facet> <h:outputText value="#{e[0]}"></h:outputText> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Quantité"></h:outputText> </f:facet> <h:outputText value="#{e[1]}"></h:outputText> </rich:column> </rich:dataTable> <h:commandLink action="retour">ret</h:commandLink> </h:form> </f:view> </body> </html>
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 <navigation-rule> <from-view-id>/a.jsp</from-view-id> <navigation-case> <from-outcome>showdetail</from-outcome> <to-view-id>/b.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/b.jsp</from-view-id> <navigation-case> <from-outcome>retour</from-outcome> <to-view-id>/a.jsp</to-view-id> </navigation-case> </navigation-rule>
Merci d'avance.
Partager