我很高兴宣布,Bean Validation TCK 1.1.0.CR1 和 Hibernate Validator 5.0.0.CR1 现已可用。

您可以在 JBoss Maven 仓库 中找到 TCK

  • 作为 Maven工件,坐标为 org.hibernate.beanvalidation.tck:beanvalidation-tck-tests:1.1.0.CR1,并且
  • 作为分发包(ZIP 或 TAR)在 SourceForge

Hibernate Validator 可以从 JBoss Maven 仓库 获取

  • 坐标为 org.hibernate:hibernate-validator:5.0.0.CR1,并且
  • 作为 ZIP 或 TAR 分发包从 SourceForge 获取

这些版本与昨天提交给 JCP 的 Bean Validation 1.1 规范的最终草案保持一致。查看 公告 了解自上次 Beta 版发布以来功能方面的变化。我们在 TCK 中解决了 4 个问题,并在 Hibernate Validator 中解决了 16 个问题

由于没有至少一小部分源代码的博客文章,让我们仔细看看一个新功能,即基于 XML 的方法约束配置,该功能由 HV-373 实现。

假设有一个类OrderService如下所示

public class OrderService {
    public Order placeOrder(String customerId, Item item, int quantity) {
        [...]
    }
}

以下展示了为该类添加方法约束的 XML 约束映射

<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings
    xmlns="https://jboss.com.cn/xml/ns/javax/validation/mapping"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://jboss.com.cn/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
    version="1.1">
    
    <default-package>com.acme.app.domain</default-package>

    <bean class="OrderService" ignore-annotations="false">
        <method name="placeOrder" ignore-annotations="true">
            <parameter type="java.lang.String">
                <constraint annotation="javax.validation.constraints.NotNull"/>
                <constraint annotation="javax.validation.constraints.Size">
                    <element name="value">5</element>
                </constraint>
            </parameter>
            <parameter type="Item">
                <valid/>
                <constraint annotation="javax.validation.constraints.NotNull"/>
            </parameter>
            <parameter type="int">
                <constraint annotation="javax.validation.constraints.Min">
                    <element name="value">1</element>
                </constraint>
            </parameter>
            <return-value>
                <valid/>
            </return-value>
        </method>
    </bean>
</constraint-mappings>

以下约束添加到placeOrder()方法中

  • 客户id参数不能是空的并且长度至少为五个字符
  • 客户参数不能是空的并且它标记为级联验证(相当于使用@Valid)
  • 客户数量参数至少为1
  • 方法返回值标记为级联验证

接下来是什么?

Bean Validation 1.1的最终版本即将发布;在此期间,我们将为TCK编写更多测试,修复Hibernate Validator中所需的所有错误,并完善文档。

你想帮忙?这很简单,只需查看建议的最终草案,并使用Hibernate Validator尝试所有新功能。

你发现了错误吗?你认为实现没有正确遵循规范?太好了!我们期待你在我们的问题跟踪器中提交报告。你也可以通过电子邮件社区论坛联系我们。


返回顶部