我有一个类并使用注释来验证类属性。
我的网页(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。
答案 0 :(得分:6)
管理以克服这个问题,而不会弄乱hibernate jar。
如果我们要覆盖默认ValidationMessages.properties
:
ValidationMessages.properties
,
ValidationMessages_de.properties
,
ValidationMessages_fr.properties
)并相应地修改它们。src/main/resources
文件夹中。所以
该文件夹包含所有* .properties文件。ValidationMessages_it.properties
并将其放在 src/main/resources
文件夹中。 (的 src/main/resources/ValidationMessages_it.properties
强>)。毕竟,当locale设置为意大利语时,如果有任何被覆盖/其他验证消息(如ValidationMessages _ *。properties),hibernate将首先查看后一个文件夹,并使用它们而不是默认值!
<强>注意强> 此解决方案适用于 MAVEN 项目,否则您应将* properties.files放在
/src/main/java
文件夹中,as mentioned in another similar question comment
答案 1 :(得分:2)
您可以通过
提供自己的语言文件 ValidationMessages_it_IT.properties
在你的类路径上。
重复答案 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;