Bonjour,
Je développe depuis peu une nouvelle application avec JSF 1.2 et richFaces 3.3.0GA.
En suivant la 3ème méthode de la FAQ, j'arrive bien à MAJ chacune de mes lignes en utilisant un setPropertyActionListener.
Par contre, je me trouve devant une impasse lorsque j'utilise un selectOneMenu dans une de mes colonnes.![]()
En effet, seule la dernière ligne de ma table prends en compte la nouvelle valeur alors que les autres gardent l'ancienne lors de la MAJ.
Existe-t-il une bonne pratique que je n'ai pas mise en œuvre ?
Es-ce un problème connu ? Quels solutions adopter ?
Ma page xhtml:
Mon BackingBean:
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 <rich:dataTable id="tableMessage" cellpadding="0" cellspacing="0" width="700" border="0" var="mess" value="#{messageBean.messages}" rowClasses="fondBlanc,fondCouleur"> <f:facet name="header"> <rich:columnGroup styleClass="fondCouleur"> <rich:column breakBefore="true"><h:outputText value="Message" /></rich:column> <rich:column width="1%"><h:outputText value="Cible" /></rich:column> <rich:column width="1%"><rich:spacer width="17" height="10"/></rich:column> </rich:columnGroup> </f:facet> <rich:column colspan="1"> <h:inputText styleClass="sansBord" value="#{mess.corpsMessage}"/> </rich:column> <rich:column colspan="1"> <h:selectOneMenu id="selectTypeId" styleClass="sansBord" value="#{mess.typeUtilisateur.idTypeUtilisateur}" > <f:selectItems value="#{messageBean.tousLesTypesUtilisateurs}"/> </h:selectOneMenu> </rich:column> <rich:column colspan="1"> <h:commandLink action="#{messageBean.processSauvMessage}" > <h:graphicImage value="../images/valider.jpg" width="17" height="17" title="Valider les modifications" /> <f:setPropertyActionListener value="#{mess}" target="#{messageBean.messToSave}" /> </h:commandLink> </rich:column> </rich:dataTable>
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 public class MessageBBean { private List<Message> messages; private List<SelectItem> tousLesTypesUtilisateurs; private Message messToSave; public MessageBBean() { } public List<Message> getMessages() { return messages; } public void setMessages(List<Message> messages) { this.messages = messages; } public List<SelectItem> getTousLesTypesUtilisateurs() { return tousLesTypesUtilisateurs; } public void setTousLesTypesUtilisateurs( List<SelectItem> tousLesTypesUtilisateurs) { this.tousLesTypesUtilisateurs = tousLesTypesUtilisateurs; } public Message getMessToSave() { return messToSave; } public void setMessToSave(Message messToSave) { this.messToSave = messToSave; } public String initMessages(){ try { List<TypeUtilisateur> l = MessageDelegate.getAllTypeUtilisateurs(); this.tousLesTypesUtilisateurs = new ArrayList<SelectItem>(); for(TypeUtilisateur t : l){ this.tousLesTypesUtilisateurs.add(new SelectItem(t.getIdTypeUtilisateur(),t.getLibelleTypeUtilisateur())); } this.messages = MessageDelegate.getAllMessages(); } catch (Exception e) { e.printStackTrace(); return "retourAccueil"; } return "h1MessageGestion"; } public void processSauvMessage(){ this.messToSave = MessageDelegate.updateMessage(this.messToSave); String rien = initMessages(); FacesContext.getCurrentInstance().renderResponse(); }
Partager