我们在开发 Bean Validation 2.0 方面取得了良好的进展,并决定将 BV 2.0 的目标版本移至 Hibernate Validator 6(更多信息请见本文末尾)。

我们不希望 5.3 版本半途而废,因此我们正在准备一个包含错误修复、额外翻译等功能的新 5.3 版本。这个候选发布版 1 是这一进程的第一步。之后请尽快发布 5.3.0.Final 版本,所以请尽可能彻底地测试这个版本,并报告您在其中发现的任何错误!

约束定义和声明编程 API

已删除实验性的 ConstraintDefinitionContributor 概念,以支持新的流体 API,与 Validator 中已存在的内容更为一致。

如果您想定义一个新的依赖于 ValidPassengerCountValidator 验证器的 ValidPassengerCount 约束注解,您可以使用以下 API

ConstraintMapping constraintMapping = configuration.createConstraintMapping();

constraintMapping
    .constraintDefinition( ValidPassengerCount.class )
        .validatedBy( ValidPassengerCountValidator.class );

它还可以用于替换用于给定注解约束的验证器的实现。例如,您需要支持国际域名 (IDN) 在您的 URL 验证中,默认的 URLValidator 对您不起作用,因为它使用不支持 IDN 的 java.net.URL。我们提供了一个替代的 RegexpURLValidator,您可能希望在这种情况使用它

ConstraintMapping constraintMapping = configuration.createConstraintMapping();

constraintMapping
    .constraintDefinition( URL.class )
        .includeExistingValidators( false )
        .validatedBy( RegexpURLValidator.class );

约束映射贡献者

感谢新的 hibernate.validator.constraint_mapping_contributors 属性,您现在可以声明多个约束映射贡献者,它们由逗号分隔,而之前您只能声明一个。

请注意,在 5.3 中,现有的 hibernate.validator.constraint_mapping_contributor 属性仍然支持,但已被弃用。

弃用的 hibernate.validator.constraint_mapping_contributor 属性将在 Hibernate Validator 6 中被移除。

电子邮件验证

我们改变了电子邮件验证的方式。现在它既更正确也更严格。我们知道有几个人在随机测试约束,他们可能需要更新他们的测试:电子邮件的域名现在需要是一个有效的域名,每个标签(两个点之间的部分)长度不得超过63个字符。因此,您不能仅生成一个由随机字符组成的80个字符长度的域名,您需要更加小心。

翻译

我们添加了几个我们提供的约束消息的新翻译

  • 阿拉伯语翻译感谢Kathryn Killebrew

  • 俄语翻译感谢Andrey Derevyanko

其他几个翻译已更新。

还有什么别的吗?

本版本的其它更改包括所有Maven依赖项的升级以及一些修复和润色。

您可以在变更日志中找到所有已解决的问题的完整列表。

要使用Maven,Gradle等获取发布版本,请使用GAV坐标 org.hibernate:{hibernate-validator|hibernate-validator-cdi|hibernate-validator-annotation-processor}:5.3.0.CR1

或者,可以在SourceForge上提供包含所有组件的分发包(TAR.GZZIP)。

要取得联系,请使用以下渠道

下一站?

我们正在积极开发Bean Validation 2.0和Hibernate Validator 6,重点支持Java 8的新特性(以及更多!)。人越多越高兴,所以请随意加入我们:提出想法,对别人的建议进行评论,现在是定义Bean Validation未来的时候了。您可以在Bean Validation网站上找到所有必要的信息。


回到顶部