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 有任何意见,请告诉我们!