Bonjour,
J'ai une DataTable, chaque ligne correspond à un aliment. L'avant dernière colonne est un input et la dernière un commandButton.
Dans l'input, le user peut taper une nouvelle quantité pour l'aliment et appuyer sur le bouton pour valider. J'arrive bien à passer l'id de l'aliment, le problème est au niveau de l'input.
En effet, il est relié à l'attribut 'change' de mon bean. Donc il prend la valeur du dernier input de ma dataTable. Donc ca ne marche que pour la dernière ligne.
model:
controller: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 <h:form> <h:dataTable value="#{MyManagedBean.alimentList}" var="al" border="1"> <h:column> <f:facet name="header"> <h:outputText value="Nom"/> </f:facet> <h:outputText value="#{al.name}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Quantité"/> </f:facet> <h:outputText value="#{al.quantity}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Modification"/> </f:facet> <h:inputText value="#{MyManagedBean.change}"> </h:inputText> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Envoyer"/> </f:facet> <h:commandButton value="OK" action="#{MyManagedBean.doChange}"> </h:commandButton> </h:column> </h:dataTable> </h:form>
Merci d'avance pour votre aideCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private Integer change = null ; public String doChange() { Aliment temp = (Aliment) FacesContext .getCurrentInstance().getExternalContext().getRequestMap().get("al"); if(change==0) { alimentEJB.deleteAliment(temp.getId()); } else{ alimentEJB.changeAliment(temp.getId(),this.change); } change = null; alimentList = alimentEJB.findAllAliments(); return "listAliments.xhtml"; }