我很高兴宣布,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尝试所有新功能。
你发现了错误吗?你认为实现没有正确遵循规范?太好了!我们期待你在我们的问题跟踪器中提交报告。你也可以通过电子邮件或社区论坛联系我们。