如何本地化Bean验证消息

时间:2014-11-05 16:07:33

标签: localization bean-validation hibernate-validator

我有一个类并使用注释来验证类属性。

我的网页(jsf2.2 / primefaces / maven)是多语言(DE-utch,FR-rench,IT-alian)。

我的问题是hibernate-validator支持某些语言(de,en,es,fr,hu,tr,pt_BR,mn_MN,zn_CN),但不支持意大利语! (在jar中列出,org-> hibernate->验证器) 因此,当我使用我的网页的意大利语版本时,验证消息以英语显示(默认选择hibernate)。

我如何覆盖它,并提供自定义意大利验证消息?

我不想搞乱hibernate jar,因为项目是maven而且会自动获取jar。

3 个答案:

答案 0 :(得分:6)

管理以克服这个问题,而不会弄乱hibernate jar。


如果我们要覆盖默认ValidationMessages.properties

  1. 我们可以选择适当的文件(提示:从hibernate中复制它们 jar:ValidationMessages.propertiesValidationMessages_de.propertiesValidationMessages_fr.properties)并相应地修改它们。
  2. 将所有内容放入我们项目的 src/main/resources 文件夹中。所以 该文件夹包含所有* .properties文件。
  3. *提供更多语言的验证(除了 hibernate的默认语言),f.e。意大利语,我们创造了一个 ValidationMessages_it.properties并将其放在 src/main/resources 文件夹中。 (的 src/main/resources/ValidationMessages_it.properties )。
  4. 毕竟,当locale设置为意大利语时,如果有任何被覆盖/其他验证消息(如ValidationMessages _ *。properties),hibernate将首先查看后一个文件夹,并使用它们而不是默认值!

      

    <强>注意   此解决方案适用于 MAVEN 项目,否则您应将* properties.files放在 /src/main/java 文件夹中,as mentioned in another similar question comment

答案 1 :(得分:2)

您可以通过

提供自己的语言文件
 ValidationMessages_it_IT.properties

在你的类路径上。

此问题与Localization with bean validation in JSF

重复

答案 2 :(得分:0)

将属性文件放入src / main / resources文件夹下,它们应命名为ValidationMessages_{locale code}.properties,默认文件应为ValidationMessages.properties,内容如下:

invalid.phone.number = Invalid phone number

然后在您的bean中:

@Pattern(regexp = "^[0-9]+[0-9\\-]{3,}[0-9]+$", message = "{invalid.phone.number}")
    private String number;