Bonjour tout le monde.
Sa fait déjà quatre jour que je scrute le net à ce propos mais je ne trouve rien.
en fait j'ai cette page jsf contenant un datatable:
EtudiantAffiche.xhtml
j'utilise ce managed bean pour traiter avec la jsf EtudiantAffiche et j'y utilise la méthode
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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> <h:head> <f:facet name="first"> <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/> <title>Liste des étudiants</title> </f:facet> </h:head> <h:body> <f:event type="javax.faces.event.PreRenderViewEvent" listener="#{etudiantMbean.preRenderView()}"/> <f:view> <h:form> <h1><h:outputText value="List"/></h1> <p:dataTable value="#{etudiantMbean.allEtudiant}" var="item" paginator="true" rows="5" widgetVar="etudiantTable" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15" emptyMessage="Aucun étudiant trouvé"> <p:column> <f:facet name="header"> <h:outputText value="Nom"/> </f:facet> <h:outputText value="#{item.nom}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Prenom"/> </f:facet> <h:outputText value="#{item.prenom}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Numéro de fiche"/> </f:facet> <h:outputText value="#{item.numFiche}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Montant à payer"/> </f:facet> <h:outputText value="#{item.montantAttrib}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Date Probable d'examen"/> </f:facet> <h:outputText value="#{item.sessionexamidSessionExam}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Formation"/> </f:facet> <h:outputText value="#{item.formationidFormation}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Agence"/> </f:facet> <h:outputText value="#{item.agenceidAgence}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Afficher"/> </f:facet> <h:commandButton value="Afficher" action="#{etudiantMbean.showDetailsEtudiant(item)}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Modifier"/> </f:facet> <h:commandButton value="Modifier" action="#{etudiantMbean.showDetails(item)}"/> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Supprimer"/> </f:facet> <h:commandButton value="Supprimer" action="#{etudiantMbean.delete(item)}"/> </p:column> </p:dataTable> </h:form> </f:view> </h:body> </html>pour récuperer un étudiant et transmettre à la page EtudiantDetails.xhtml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part showDetails(Etudiant etud)
Voici la méthode showDetails:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public String showDetails(Etudiant etud){ this.etudiant = etud; return "EtudiantDetails"; }
Le code source de la page EtudiantDetails.xhtml est le suivant:
Le problème est que lorsque je clique sur le bouton "Mettre à jour" ça ne modifie pas mais ça fait plustot un nouvel enregistrement dans la basse de données.
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 <f:view> <h:form> <h1><h:outputText value="Create/Edit"/></h1> <h:panelGrid columns="2"> <h:outputLabel value="Nom:" for="nom" /> <h:inputText id="nom" value="#{etudiantMbean.etudiant.nom}" title="Nom" required="true" requiredMessage="The Nom field is required."/> <h:outputLabel value="Prenom:" for="prenom" /> <h:inputText id="prenom" value="#{etudiantMbean.etudiant.prenom}" title="Prenom" required="true" requiredMessage="The Prenom field is required."/> <h:outputLabel value="DateNaiss:" for="dateNaiss" /> <h:inputText id="dateNaiss" value="#{etudiantMbean.etudiant.dateNaiss}" title="DateNaiss" required="true" requiredMessage="The DateNaiss field is required."> <f:convertDateTime pattern="MM/dd/yyyy" /> </h:inputText> <h:outputLabel value="NumCNI:" for="numCNI" /> <h:inputText id="numCNI" value="#{etudiantMbean.etudiant.numCNI}" title="NumCNI" required="true" requiredMessage="The NumCNI field is required."/> <h:outputLabel value="DateDelivCNI:" for="dateDelivCNI" /> <h:inputText id="dateDelivCNI" value="#{etudiantMbean.etudiant.dateDelivCNI}" title="DateDelivCNI" required="true" requiredMessage="The DateDelivCNI field is required."> <f:convertDateTime pattern="MM/dd/yyyy" /> </h:inputText> <h:outputLabel value="AdrMail:" for="adrMail" /> <h:inputText id="adrMail" value="#{etudiantMbean.etudiant.adrMail}" title="AdrMail" /> <h:outputLabel value="Profession:" for="profession" /> <h:inputText id="profession" value="#{etudiantMbean.etudiant.profession}" title="Profession" /> <h:outputLabel value="Societe:" for="societe" /> <h:inputText id="societe" value="#{etudiantMbean.etudiant.societe}" title="Societe" /> <h:outputLabel value="NumTel:" for="numTel" /> <h:inputText id="numTel" value="#{etudiantMbean.etudiant.numTel}" title="NumTel" required="true" requiredMessage="The NumTel field is required."/> <h:outputLabel value="NumFiche:" for="numFiche" /> <h:inputText id="numFiche" value="#{etudiantMbean.etudiant.numFiche}" title="NumFiche" required="true" requiredMessage="The NumFiche field is required."/> <h:outputLabel value="MontantAttrib:" for="montantAttrib" /> <h:inputText id="montantAttrib" value="#{etudiantMbean.etudiant.montantAttrib}" title="MontantAttrib" required="true" requiredMessage="The MontantAttrib field is required."/> <h:outputLabel value="DepotDossier:" for="depotDossier" /> <h:inputText id="depotDossier" value="#{etudiantMbean.etudiant.depotDossier}" title="DepotDossier" required="true" requiredMessage="The DepotDossier field is required."/> <h:outputLabel value="RetraitPermis:" for="retraitPermis" /> <h:inputText id="retraitPermis" value="#{etudiantMbean.etudiant.retraitPermis}" title="RetraitPermis" required="true" requiredMessage="The RetraitPermis field is required."/> <h:outputLabel value="SessionexamidSessionExam:" for="sessionexamidSessionExam" /> <h:selectOneMenu id="sessionexamidSessionExam" value="#{etudiantMbean.etudiant.sessionexamidSessionExam}" required="true" requiredMessage="The SessionexamidSessionExam field is required." converter="#{etudiantMbean.sessionExamConverter}"> <!-- TODO: update below reference to list of available items--> <f:selectItems var="itemSessionexam" itemLabel="#{itemSessionexam.dateExam}" itemValue="#{itemSessionexam}" value="#{etudiantMbean.allSessionexam}"/> </h:selectOneMenu> <h:outputLabel value="FormationidFormation:" for="formationidFormation" /> <h:selectOneMenu id="formationidFormation" value="#{etudiantMbean.etudiant.formationidFormation}" required="true" requiredMessage="The FormationidFormation field is required." converter="#{etudiantMbean.formationConverter}"> <!-- TODO: update below reference to list of available items--> <f:selectItems var="itemFormation" itemValue="#{itemFormation}" value="#{etudiantMbean.allFormations}" itemLabel="#{itemFormation.categorieFormation} #{itemFormation.typeFormation}"/> </h:selectOneMenu> <h:outputLabel value="AgenceidAgence:" for="agenceidAgence" /> <h:selectOneMenu id="agenceidAgence" value="#{etudiantMbean.etudiant.agenceidAgence}" required="true" requiredMessage="The AgenceidAgence field is required." converter="#{etudiantMbean.agenceConverter}"> <!-- TODO: update below reference to list of available items--> <f:selectItems var="itemAgence" value="#{etudiantMbean.allAgences}" itemValue="#{itemAgence}" itemLabel="#{itemAgence.villeAgence} #{itemAgence.nomAgence}"/> </h:selectOneMenu> <h:commandButton value="Mettre à jour" action="#{etudiantMbean.update()}"/><h:commandButton value="Retour" action="EtudiantAffiche.xhtml"/> </h:panelGrid> </h:form> </f:view>
Le code source de la méthode update est le suivant:
l'enterprise bean ici appelle la méthode updateEtudiant elle même contenue dans le session bean EtudiantFacade et le code source de cette méthode est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public String update(){ etudiantFacade.updateEtudiant(etudiant); return "EtudiantAffiche"; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void updateEtudiant(Etudiant etudiant){ em.merge(etudiant); }
Je n'y comprend surtout rien surtout qu'il est à noter que lorsque je clique sur modifier, la page EtudiantDetails.xhtml s'ouvre bien avec les paramètres de l'étudiant à modifier mais la barre d'adresse du navigateur référence qu'on est sur la page EtudiantAffiche.xhtml. Et quand on clique sur mettre à jour ça affiche bien le datatable mais la barre d'adresse du navigateur référence qu'on est sur la page EtudiantDetails.xhtml.
Croyez moi j'y comprend rien!
SVP si quelqu'un a déjà été confronté à ce genre de problème je le prie de m'aider.
Merci d'avance pour tout.
Partager