Bean Message de Validation avec le paramètre dynamique
Je suis arriver a commencé avec bean validation, et je suis en train de composer une contrainte. Ma contrainte est de valider un CPF(document personnel au Brésil). Ma contrainte est au travail, mais j'ai besoin que le message contient un paramètre dynamique.
Je suis en utilisant ValidationMessages.les propriétés. Mon code:
@Constraint(validatedBy=CpfValidator.class)
@Size(min=11, max=14)
@Documented
@Target({ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Cpf {
String message() default "{cpf.validation.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Mon ValidationMessages.propriétés:
cpf.validation.message=Cpf {cpf} é inválido
Mon Validateur: je suis à l'aide d'un contexte.buildConstraintViolationWithTemplate à customiza mon message.
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
String cpf = value;
boolean result = ValidationUtil.validaCpf(cpf);
if (result) {
return true;
}
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("pf.validation.message}")
.addConstraintViolation();
return false;
}
Comment puis-je passer à la méthode de la valeur(cpf) par le paramètre lorsque le message est créé?
OriginalL'auteur Henrique Droog | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
Lorsque l'on travaille avec Hibernate Validator >= 4.2 vous pouvez faire référence à la méthode de la valeur via
${validatedValue}
dans vos messages (dans le Bean Validation 1.1 qui est normalisé dans la spec):Btw. Hibernate Validator est livré avec une
@CPF
contrainte, vous pouvez trouver plus d'informations dans le guide de référence. Serait très heureux d'entendre parler de la façon qui fonctionne pour vous.OriginalL'auteur Gunnar
J'ai trouvé la solution, je pense que je peux améliorer cette solution, mais pour l'instant c'est bon. Je l'ai fait des changements dans mon code:
OriginalL'auteur Henrique Droog
si nous voulons donner un autre paramètre à la place de la méthode de la valeur du message:
Nous pouvons utiliser HibernateConstraintValidatorContext comme suit:
Comme il est mentionné ci-dessus, est en veille prolongée la documentation
OriginalL'auteur Nelson Reyes