加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

带有动态参数的Bean验证消息

发布时间:2020-12-15 04:42:07 所属栏目:Java 来源:网络整理
导读:我开始使用bean验证,我正在尝试构建约束.我的约束是验证CPF(巴西的个人文件).我的约束是有效的,但我需要消息包含动态参数. 我正在使用ValidationMessages.properties.我的代码: @Constraint(validatedBy=CpfValidator.class)@Size(min=11,max=14)@Documente
我开始使用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约束,你可以在reference guide中找到更多信息.很高兴听到它对你有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读