如何在Hibernate验证器中添加自定义错误消息

时间:2011-08-17 13:12:59

标签: hibernate-validator

我有一个像这样的简单类,

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

public class Form implements Serializable {
   @NotNull
   @Length(min = 2, max = 20)
   private String lastName;
}

我在classpath中有messages.properties文件。然后通过Spring bean加载,如下所示,

<bean name="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="validationMessageSource">
        <ref bean="resourceBundleLocator"/>
    </property>
</bean>

<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath*:messages.properties</value>
        </list>
    </property>
</bean>

我想要的是获取根据验证的bean定制的错误消息。换句话说,我想让每个ConstraintViolation对象返回我在属性文件中定义的错误消息,而不是默认消息。是否可以使用类似此格式{xxx.yyyy.zzzz}的值添加message属性,并从messages.properties文件中引用该消息?

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<Form>> inputErrors = validator.validate(form); 

如果我想自定义@NotNull和@Length的默认消息,我该怎么做?

我对Hibernate验证的体验是,任何示例代码或分步指南都会受到赞赏。

1 个答案:

答案 0 :(得分:4)

您有此资源包文件包含消息值。

我认为你必须使用ie @NotNull注释的路径 手动覆盖消息! 像javax.validation.constraints.NotNull=Notnull error happened! 或类似的东西!

在此查看:

Hibernate Validator - The error message

希望有所帮助