简体   繁体   English

Java bean验证 - 覆盖默认消息

[英]Java bean validation - override default message

How can I return different messages on a class level validator? 如何在类级别验证器上返回不同的消息?

Interface 接口

public @interface ValidFoo
{
    public String message() default "{package.ValidFoo.message}";
}

Implementation 履行

@Override
public boolean isValid(final Foo foo, final ConstraintValidatorContext context)
{
    // check constraint 1
    // --> return message "package.ValidFoo.message_constraint1"

    // check constraint 2
    // --> return message "package.ValidFoo.message_constraint2"
}

ValidationMessages.properties ValidationMessages.properties

package.ValidFoo.message=Validation error.
package.ValidFoo.message_constraint1=Validation error 1.
package.ValidFoo.message_constraint2=Validation error 2.

You need to use the ConstraintValidatorContext to select the right message template. 您需要使用ConstraintValidatorContext选择正确的消息模板。 You can see an example in the Hibernate Validator docs - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints-validator . 您可以在Hibernate Validator文档中看到一个示例 - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints-validator

Effectively you do something like: 你有效地做了类似的事情:

    constraintContext.disableDefaultConstraintViolation();
    constraintContext.buildConstraintViolationWithTemplate(
            "{package.ValidFoo.message_constraint1}" 
    )
    .addConstraintViolation();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM