[Validator] règle personnalisée
Bonjour,
j'ai suivi un exemple du livre "Développement Java sous STRUTS" de l'ENI pour me faire une règle de validation privée.
Je précise que mes autres règles de validation fonctionnent, donc j'ai bien compris la configuration du plugin Validator.
voici la définition de ma règle :
validator-rules.xml
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<validator name="yesno"
classname="fr.edition.eni.validator.ValideEni"
method="valideLoisirs"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.yesno"/> |
ValideEni.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class ValideEni implements Serializable{
private static final long serialVersionUID = 1L;
public static boolean valideLoisirs(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request){
String validChamp = ValidatorUtils.getValueAsString(bean,field.getProperty());
System.out.println(validChamp);
if(!validChamp.equalsIgnoreCase("Y") && !validChamp.equalsIgnoreCase("N")){
errors.add(field.getKey(),Resources.getActionMessage(request,va,field));
return false;
}
return true;
}
} |
validation.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<form name="livreForm">
<field
property="titre"
depends="required">
<arg key="auteur.titre"/>
</field>
<field
property="auteur"
depends="required">
<arg key="auteur.nom"/>
</field>
<field
property="pret"
depends="required,yesno">
<arg key="auteur.pret"/>
</field>
<field property="loisirs" depends="multirequired">
</field>
</form> |
le validator "required" fonctionne bien mais si je saisi autre chose que "y" ou "n" ça marche quand même, alors que le validator "yesno" devrait me bloquer...
où est mon erreur ? je ne vois vraiment pas...