Bonjour,
je souhaiterais mettre à jour une deuxième table basée sur la sélection d'une ligne dans une première table.
J'ai beau débugger, je vois bien mes beans mis à jour quand je sélectionne une ligne, et les getter bien appelés, la table n'est pas mise à jour.
J'ai un formulaire pour lequel cela fonctionne bien, mais pas la table.
Voici le code
Première table sur laquelle la selection est faite.
Code html : 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 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:form id="memberTableForm" prependId="false"> <p:dataTable var="member" value="#{membersTable.members}" filteredValue="#{membersTable.filteredMembers}" widgetVar="membersTableVar" scrollable="true" scrollHeight="1%" tableStyle="width:98%" selectionMode="single" selection="#{membersTable.selectedMember}" rowKey="#{member}"> <p:ajax event="rowSelect" listener="#{membersTable.onRowSelect}" update="@([id$=memberFormId], [id$=memberAbonnements])" /> <p:column headerText="#{messages['NUMERO.MEMBRE']}"> <h:outputText value="#{member.memberNumber}" /> </p:column> <p:column headerText="#{messages['NOM']}" filterBy="#{member.name}" filterMatchMode="startsWith"> <h:outputText value="#{member.name}" /> </p:column> <p:column headerText="#{messages['PRENOM']}" filterBy="#{member.firstname}" filterMatchMode="startsWith"> <h:outputText value="#{member.firstname}" /> </p:column> <p:column headerText="#{messages['ADRESSE']}"> <h:outputText value="#{member.address}" /> </p:column> <p:column headerText="#{messages['VILLE']}"> <h:outputText value="#{member.postalCode} #{member.city}" /> </p:column> <p:column headerText="#{messages['TELEPHONE']}"> <h:outputText value="#{member.phone}" /> </p:column> <f:facet name="footer"> <h:outputText value=" " /> </f:facet> </p:dataTable> </h:form> </ui:composition>
et la deuxième table sur laquelle aucune mise à jour n'est faite
Code html : 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 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:form id="memberAbonnements" prependId="false"> <p:dataTable var="abonnement" value="#{memberAbonnement.abonnements}" scrollable="true" scrollHeight="1%" tableStyle="width:98%" selectionMode="single" selection="#{membersTable.selectedMember}" rowKey="#{abonnement}"> <!-- <p:ajax event="rowSelect" listener="#{membersTable.onRowSelect}" update=":masterTabView:memberForm" /> --> <p:column headerText="#{messages['SAISON']}"> <h:outputText value="#{abonnement.saison.id}" /> </p:column> <p:column headerText="#{messages['BLOC']}"> <h:outputText value="#{abonnement.blocId.blocValue}" /> </p:column> <p:column headerText="#{messages['RANG']}"> <h:outputText value="#{abonnement.rang}" /> </p:column> <p:column headerText="#{messages['PLACE']}"> <h:outputText value="#{abonnement.place}" /> </p:column> <p:column headerText="#{messages['REDUCTION']}"> <h:outputText value="#{abonnement.reduction}" /> </p:column> <p:column headerText="#{messages['PAYE']}"> <p:selectBooleanCheckbox value="#{abonnement.paye}" /> </p:column> <p:column headerText="#{messages['ACOMPTE']}"> <h:outputText value="#{abonnement.acompte}" /> </p:column> <p:column headerText="#{messages['PLACE.COMMANDEE']}"> <h:outputText value="#{abonnement.placeCommandee}" /> </p:column> <f:facet name="footer"> <h:outputText value=" " /> </f:facet> </p:dataTable> </h:form> </ui:composition>
Le bean de la première table
Code java : 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 package standardNaast.beans; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.PostConstruct; import org.primefaces.event.SelectEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import standardNaast.entities.Abonnement; import standardNaast.entities.Personne; import standardNaast.service.PersonneService; @Controller("membersTable") @Scope("session") public class MembersTableBean implements Serializable { private static final long serialVersionUID = 7614568701955199215L; private List<Personne> members = new ArrayList<>(); private List<Personne> filteredMembers = new ArrayList<>(); private Personne selectedMember; private List<Abonnement> abonnements; @Autowired private MemberAbonnementBean memberAbonnementBean; @Autowired private MemberFormBean memberForm; @Autowired private PersonneService personneService; @PostConstruct public void init() { System.out.println("Initializing MembersTableBean"); List<Personne> findAllPerson = this.personneService.findAllPerson(); Collections.sort(findAllPerson); this.members = findAllPerson; this.filteredMembers = findAllPerson; } public List<Personne> getMembers() { return this.members; } public List<Personne> getFilteredMembers() { return this.filteredMembers; } public void setFilteredMembers(final List<Personne> filteredMembers) { this.filteredMembers = filteredMembers; } public Personne getSelectedMember() { return this.selectedMember; } public void setSelectedMember(final Personne selectedMember) { this.selectedMember = selectedMember; this.setAbonnements(this.getSelectedMember().getAbonnementList()); } public void onRowSelect(final SelectEvent event) { this.memberForm.setPersonne(this.getSelectedMember()); this.memberAbonnementBean.setAbonnements(this.getAbonnements()); } public List<Abonnement> getAbonnements() { return this.abonnements; } public void setAbonnements(final List<Abonnement> abonnements) { this.abonnements = abonnements; } }
Et le code du deuxième bean
Code java : 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 package standardNaast.beans; import java.io.Serializable; import java.util.List; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import standardNaast.entities.Abonnement; @Controller("memberAbonnement") @Scope("session") public class MemberAbonnementBean implements Serializable { private static final long serialVersionUID = 423300322596970656L; private List<Abonnement> abonnements; public List<Abonnement> getAbonnements() { return this.abonnements; } public void setAbonnements(final List<Abonnement> abonnements) { this.abonnements = abonnements; } }
Le setter et getter du deuxième bean est bien appelé. Quand je débugge je vois bien que le getAbonnements() est bien appelé via org.primefaces.component.datatable.DataTable.getValue()
--> Voilà je suis bloqué là.
Merci d'avance pour votre aide.
Partager