Bonjour à tous,

Je cherche à implémenter une validation de 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&eacute;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>
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
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;
	}
}
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
 
@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");
		}
	}	
}
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
 
[...]
public String submit(@ModelAttribute("ficheForm") FicheForm fiche,BindingResult result){
        validator.validate(fiche,result);
	if ( result.hasErrors()){
		return "failed";
	}else{
		//TODO: MAJ user
	}		
	return "success";
}
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
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>
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

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 !