我遇到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:我完全重写了我添加示例的初始问题,以便您可以自己尝试。
答案 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 。