Pb selectOneMenu dans dataTable
	
	
		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. :evilred: :evilred:
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. 8O
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:
	Code:
	
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> | 
 Mon BackingBean:
	Code:
	
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();
	} |