Bonjour à tous,
Je cherche à implémenter une validation de ce formulaire:
J'ai donc écris une classe correspondante à ce formulaire:
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 <form:form action="annuaire/ficheSubmit" commandName="ficheForm"> <form:label path="firstname">Prénom:</form:label> <form:input path="firstname"/> <form:errors path="firstname"/> <form:label path="lastname">Nom:</form:label> <form:input path="lastname"/> <form:errors path="lastname"/> <form:label path="account">Identifiant:</form:label> <form:input path="account"/> <form:errors path="account"/> <form:label path="password">Mot de passe:</form:label> <form:password path="password" autocomplete="off" /> <form:errors path="password"/> <form:label path="passwordConfirm">Confirmer le mot de passe:</form:label> <form:password path="passwordConfirm" autocomplete="off"/> <form:errors path="passwordConfirm"/> <input type="submit" value="Sauvegarder"/> </form:form>
Une classe de validation:
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 public class FicheForm { private String firstname = null; private String lastname = null; private String account = null; private String password = null; private String passwordConfirm = null; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPasswordConfirm() { return passwordConfirm; } public void setPasswordConfirm(String passwordConfirm) { this.passwordConfirm = passwordConfirm; } }
Et enfin, voici le code du controller que je souhaite mettre en place
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 @Component public class FicheValidator implements Validator{ @Override public boolean supports(Class clazz) { return FicheForm.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstname", "firstname.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastname", "lastname.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "account", "account.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "password.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "passwordConfirm", "passwordConfirm.required"); FicheForm form = (FicheForm) target; if ( form.getPassword().equals(form.getPasswordConfirm() ) ){ errors.rejectValue("password", "passwords.dont.match"); } } }
Mon problème est le suivant: j'utilise Struts 2 pour gérer toutes les actions de mon application; configuré ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [...] public String submit(@ModelAttribute("ficheForm") FicheForm fiche,BindingResult result){ validator.validate(fiche,result); if ( result.hasErrors()){ return "failed"; }else{ //TODO: MAJ user } return "success"; }
Je ne saisis pas comment faire matcher mes actions (ici: ficheSubmit) avec la méthode submit(@ModelAttribute("ficheForm") FicheForm fiche,BindingResult result) -nécessaire pour initialiser la méthode validate; configuré ainsi, Struts souhaite rediriger vers la méthode "submit()" sans argument
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <package name="annuaire" extends="struts-default"> <action name="annuaire" method="index" class="com.clt.annuaire.AnnuaireIndex"> <result name="success">/WEB-INF/jsp/annuaire/fiche.jsp</result> </action> <action name="ficheEdit" method="index" class="com.clt.annuaire.FicheEdit"> <result name="success">/WEB-INF/jsp/annuaire/formfiche.jsp</result> </action> <action name="ficheSubmit" method="submit" class="com.clt.annuaire.FicheEdit"> <result name="success">/WEB-INF/jsp/annuaire/fiche.jsp</result> <result name="failed">/WEB-INF/jsp/annuaire/formfiche.jsp</result> </action> </package>
Auriez-vous une idée sur la manière dont je pourrais procéder pour mettre en place cette validation ? Ou quelques liens sur lesquels je pourrais m'appuyer ?
D'avance merci !
Partager