Hibernate Validator 3.1.0.GA忽略ValidationMessages.properties(包括测试项目)

时间:2012-06-14 10:03:24

标签: java bean-validation hibernate-validator

我遇到Hibernate Validator 3.1.0.GA在属性文件ValidationMessages.properties中没有查找自定义验证消息的问题。

为了说明问题,我创建了一个小示例项目,您可以通过git获取:

git clone https://bitbucket.org/sstein/validation-example.git

获得源树后,您可以通过运行我创建的单元测试来测试问题:

mvn test

有3个测试用例,validateDescriptionTest(com.example.MyClassTest)失败了:

  

预期:< [描述必须介于1到10个字符之间。]>但是:< [{descriptionMsg}]>

我还添加了一个测试用例,用于验证资源包是否可以通过单元测试访问,这是有效的。

有谁知道为什么这个失败了?

PS:我完全重写了我添加示例的初始问题,以便您可以自己尝试。

2 个答案:

答案 0 :(得分:2)

ValidationMessages.properties的最终位置shuold在WEB-INF / classes中。它如何到达取决于您正在使用的构建系统以及如何配置它。在NetBeans IDE中,当我创建Web应用程序时,我可以将ValidationMessages.properties放入默认的Java包中。

如果您使用Maven作为构建工具,请将属性放入/ src / main / resources目录,这样Maven就会将其复制到WEB-INF / classes中。

要确保属性文件到位,请将.war文件作为ZIP打开,然后查看。另一种说法是通过检查JSF是否在内部获取验证器消息。

对于像@Size这样的JSR-303消息,上面的属性键应该是正确的。

答案 1 :(得分:1)

所以解决方案很简单,只有found by Hardy Ferentschik of Hibernate

在Hibernate Validator 3.1.0.GA中,捆绑包必须被称为 ValidatorMessages.properties 而不是 ValidationMessages.properties