【问题标题】:Hibernate Validator 3.1.0.GA ignoring ValidationMessages.properties (test project included)Hibernate Validator 3.1.0.GA 忽略 ValidationMessages.properties(包括测试项目)
【发布时间】:2012-06-14 10:03:24
【问题描述】:

我遇到了 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) 失败:

预期: 但实际上是:

我还添加了一个测试用例,验证资源包是否可以通过单元测试访问,并且可行。

有谁知道这个失败的原因吗?

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

【问题讨论】:

    标签: java bean-validation hibernate-validator


    【解决方案1】:

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

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

    要确保属性文件就位,请将 .war 文件以 ZIP 格式打开并查看一下。另一种判断方法是检查 JSF 是否接收到内部的验证器消息。

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

    【讨论】:

    • 我重写了我的问题,添加了一个小示例项目。如果你喜欢,你可以自己测试一下。即使在运行“mvn test”后可以在目标/类中找到 ValidationMessages.properties,资源包也不会解析消息。
    【解决方案2】:

    所以解决方法很简单,就是found by Hardy Ferentschik of Hibernate

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

    【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多