Hibernate Validator 4.2.0.CR1 已准备好通过 JBoss Maven 仓库 或 SourceForge 下载。我们承诺您将不必再等待 4.2.0.Final 版本那么久。总共解决了 28 个问题。大多数问题都是一些小错误修复、文档和代码重构。感谢所有提供错误报告并帮助我们使验证器变得更好的每个人 :-)
最大的变化是现在也可以通过编程方式配置方法级别的验证。为了明确地实现这一点,我们不得不对编程API进行更多修改。你还记得Beta2中的编程API是什么样的吗?这里有一个例子
ConstraintMapping mapping = new ConstraintMapping(); mapping.type( Car.class ) .property( "manufacturer", FIELD ) .constraint( NotNullDef.class ) .property( "licensePlate", FIELD ) .constraint( NotNullDef.class ) .constraint( SizeDef.class ) .min( 2 ) .max( 14 ) .property( "seatCount", FIELD ) .constraint( MinDef.class ) .value ( 2 ) .type( RentalCar.class ) .property( "rentalStation", METHOD) .constraint( NotNullDef.class );
在CR1 API中,同样的例子看起来像这样
ConstraintMapping mapping = new ConstraintMapping(); mapping.type( Car.class ) .property( "manufacturer", FIELD ) .constraint( new NotNullDef() ) .property( "licensePlate", FIELD ) .constraint( new NotNullDef() ) .constraint( new SizeDef() .min( 2 ) .max( 14 ) ) .property( "seatCount", FIELD ) .constraint( new MinDef() .value ( 2 ) ) .type( RentalCar.class ) .property( "rentalStation", METHOD ) .constraint( new NotNullDef() );
如您所见,区别在于您现在必须实例化定义类。仅此而已。不是很糟糕,对吧?编程方法级别的验证看起来是这样的
ConstraintMapping mapping = new ConstraintMapping(); mapping.type( Car.class ) .method( "drive", String.class, Integer.class ) .parameter( 0 ) .constraint( new NotNullDef() ) .constraint( new MinDef().value ( 1 ) ) .parameter( 1 ) .constraint( new NotNullDef() ) .returnValue() .constraint( new NotNullDef() ) .method( "check" ) .returnValue() .constraint( new NotNullDef() );
您可以在 这里 找到本版本的完整变更日志。请通过 验证器论坛 和 Jira 问题跟踪器 提供反馈。
感谢Gunnar和Kevin再次主导了大部分工作。
祝您愉快!
附言:如果您对应该将什么内容纳入 Bean Validation 1.1 有任何意见,请告诉我们!