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

标签 validation jakarta-ee message bean-validation

我正在开始进行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中找到更多信息。得知您的工作方式非常高兴。

关于validation - 带有动态参数的Bean验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21486192/

相关文章:

jquery - 将嵌套错误包装器与 jQuery 验证插件一起使用

java - 运行两个并行事务

ios - 在 TableView 单元格中显示多行 - IOS

java - @RequestBody @Valid SomeDTO 有枚举类型的字段,自定义错误信息

ruby-on-rails - 覆盖SecurePassword的验证错误消息

Javascript 字符串验证。如何在字符串中只写一次字符并且只在开头?

java - JBoss - 如何在多数据库环境中设置默认数据源?

java - 数据仓库项目的存储过程与 JDO

c++ - 二进制表达式错误消息的无效操作数

javascript - 使用 Ajax 在 Magento 中添加产品后成功消息