Spring MVC + Hibernate验证器:如何覆盖/国际化默认错误消息?

kyi*_*yiu 3 spring spring-mvc hibernate-validator bean-validation

我正在开发一个Spring MVC项目,我正在使用Hibernate Validator来验证表单中的输入字段.由于我的项目是基于Maven的,我添加了这个依赖项:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-annotation-processor</artifactId>
        <version>4.1.0.Final</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

表单验证过程工作正常,但现在,我想覆盖或国际化默认错误消息.

例如,默认情况下,使用@NotEmpty批注将生成消息"可能不为空".我如何通过自己的消息替换此消息?我尝试了几种解决方案:

  • 定义一个id为"messageSource"的Spring bean并设置其"basenames"属性
  • 在项目类路径中创建ValidationMessages.properties文件

但仍会显示默认消息...

任何提示?Thx提前.

Jap*_*edi 5

是的,你可以这样做.您可以从属性文件加载错误消息.但是你需要以正确的格式获得密钥.喜欢NotEmpty.ClassName.fieldName=fieldName Can not be empty.

您只需在属性文件中指定确切的类名和属性名称即可.在你的情况下,其他一切看起来都很完美.

对于具有该批注的所有字段,您还可以为特定类型的验证批注提供常见错误消息.喜欢javax.validation.constraints.NotNull=Notnull erro happened!

希望这对你有所帮助.干杯.

  • 谢谢,您的回答帮助我找到了一个令人满意的解决方案:我只需要在我的类路径中添加一个名为"ValidationMessages.properties"的属性文件.然后,我可以添加指向每个验证注释的值(例如:org.hibernate.validator.constraints.NotEmpty.message =我的消息),或者在括号之间定义我自己的键,并在属性文件中使用此键. (3认同)
  • 这有助于我查看所有错误消息以覆盖默认值:http://www.silverbaytech.com/2013/04/16/custom-messages-in-spring-validation/ (2认同)