我正在开始进行bean验证,并且正在尝试构成约束。我的约束是验证CPF(巴西的个人文件)。我的约束正在起作用,但是我需要消息包含动态参数。
我正在使用ValidationMessages.properties。我的代码:
@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 {};
}
我的ValidationMessages.properties:
cpf.validation.message=Cpf {cpf} é inválido
我的验证者:我正在使用context.buildConstraintViolationWithTemplate自定义我的消息。
@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;
}
创建消息时如何通过参数传递经过验证的值(cpf)?
当使用Hibernate Validator> = 4.2时,您可以${validatedValue}
在您的消息中引用经过验证的值(在规范中标准化的Bean Validation 1.1中):
cpf.validation.message=Cpf ${validatedValue} é inválido
顺便说一句。Hibernate Validator已经带有@CPF
约束,您可以在参考指南中找到更多信息。得知您的工作方式非常高兴。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句