Bonjour,
J'utilise actuellement Struts 2 + Spring + Hibernate.
Dans une jsp j'affiche une liste de données. Toutes les ligne sont modifiables, j'ai donc un "formulaire" associé à chaque ligne.
Du côté de mon action, les formulaires sont stockés dans une map avec pour clé l'identifiant de la ligne.
Avec un peu de code ça sera peut être plus parlant
- la jsp (il y a du js qui enregistre l'id de la ligne lors du submit) :
- dans mon action, j'ai la liste des données, la map des formulaires et l'id de la ligne modifiée :
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 <s:fielderror/> <s:form theme="simple"> <table> <s:iterator value="operations"> <!-- Partie Données --> <tr> <td><s:property value="label"/></td> <td><s:text name="format.quantity"><s:param value="quantity"/></s:text></td> </tr> <!-- Partie Formulaire --> <tr> <td colspan="2"> <table> <tr> <td>Label :</td> <td><s:textfield id="label_%{id}" name="operationForms[%{id}].label"/></td> </tr> <tr> <td>Quantité :</td> <td><s:textfield id="quantity_%{id}" name="operationForms[%{id}].quantity"/></td> </tr> <tr> <td colspan="2"><s:submit value="Enregistrer op." method="saveOperation"/></td> </tr> </table> </td> </tr> </s:iterator> </table> </s:form>
- le bean qui représente un formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private Long operationId; private List<Operation> operations; private Map<Long, OperationForm> operationForms;
Est-il possible de faire la validation uniquement des champs associés à la ligne en cours de modification ?
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 public class OperationForm { private String label; private Double quantity; public String getLabel() { return this.label; } public void setLabel(String label) { this.Label = label; } public Double getQuantity() { return this.quantity; } public void setQuantity(Double quantity) { this.quantity = quantity; } }
J'ai essayé quelques trucs sur le fichier *-validation.xml sans succès :-( :
J'espère être resté clair dans mes explications... Merci d'avance pour votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <field name="operationForms[${operationId}].label"> <field-validator type="required"> <message>Label obligatoire !</message> </field-validator> </field> <field name="operationForms[${operationId}].quantity"> <field-validator type="required"> <message>Quantité obligatoire !</message> </field-validator> </field>
Partager