J'utilise le validateur Hibernate pour la validation de formulaire dans mon application web. J'utilise l'annotation @Length pour mon attribut String comme suit:
@Length(min = 5, message = "The field must be at least 5 characters")
private String myString;
Cependant, j'ai besoin d'afficher un message différent si la chaîne dépasse 50 caractères. Existe-t-il un moyen d'utiliser le validateur @Length prêt à l'emploi pour ce faire? Un exemple de ce que j'aimerais faire (le compilateur ne me le permet pas) est le suivant:
@Length(min = 5, message = "The field must be at least 5 characters")
@Length(max = 50, message = "The field must be less than 50 characters")
private String myString;
J'ai essayé @Max et @Min et ils ne font pas ce que je veux. Toute contribution serait vivement appréciée!
Vous pouvez spécifier plusieurs @Length
contraintes sur un élément en utilisant le --- annotation de liste (qui est défini pour chaque type de contrainte dans Bean Validation/Hibernate Validator) comme ceci:
@List({
@Length(min = 5, message = "The field must be at least 5 characters"),
@Length(max = 50, message = "The field must be less than 50 characters")
})
private String myString;
Btw. Je recommande de préférer @ Size tel que défini par l'API de validation de bean sur @Length
pour des raisons de portabilité.
Si vous utilisez le Java standard javax.validation.constraint.Size, vous pouvez obtenir la même chose de cette façon:
@Size.List ({
@Size(min=8, message="The field must be at least {min} characters"),
@Size(max=60, message="The field must be less than {max} characters")
})
private String myString;
Notez que vous pouvez éviter de coder en dur la taille du champ en utilisant l'interpolation des messages.
Selon la documentation, vous pouvez utiliser @Length(min=, max=)
, avec un seul message. Ensuite, changez simplement votre message en "Le champ doit contenir entre 5 et 50 caractères"