Hibernate Validator 4.2.0.Beta2 已打包,可通过 JBoss Maven 仓库SourceForge 消费。

Beta1 开始,我们专注于方法级别的验证细节和错误修复。其中一个重要问题是 HV-421,它定义了参数约束验证的行为。通常,逻辑与(AND)用于组合在给定字段或方法中定义的类层次结构内的所有约束。但是,对于方法参数约束,这样做会导致与 编程合约 定义的不明确性,其中子类型只能削弱超类型定义的前置条件。为了支持这一点,必须使用或(OR)组合一个层次结构中所有的参数约束。一个保守的替代方案(我们为这次发布选择的方案)是在类层次结构中的相同参数上禁止多个参数约束。HV-421 讨论了更多细节。我们非常欢迎对此提供反馈。

另一个与方法级别验证相关的功能是对元数据 API 的扩展 (HV-440)。我们引入了三个额外的接口 TypeDescriptorMethodDescriptorParameterDescriptor,它们都可以在 org.hibernate.validator.method.metadata 包中找到。以下是一个使用示例

 MethodValidator validator = Validation.byProvider( HibernateValidator.class )
    .configure()
    .buildValidatorFactory()
    .getValidator()
    .unwrap( MethodValidator.class );

TypeDescriptor typeDescriptor = validator.getConstraintsForType( clazz );
...
Set<MethodDescriptor> constrainedMethods = descriptor.getConstrainedMethods();
...
List<ParameterDescriptor> parameterConstraints = methodDescriptor.getParameterConstraints();
ParameterDescriptor parameterDescriptor = parameterConstraints.get( 0 );
assertTrue( parameterDescriptor.hasConstraints() );
...
注意: MethodValidator.validateParameters 已更名为 MethodValidator.validateAllParameters (HV-415)。

提到至少一种与功能无关的方法级别验证 - Hibernate Validator 现在有一个快速失败选项。启用后,验证将在第一个验证错误时终止。这可能在大型对象图验证中很有趣。例如,您可以通过以下方式启用快速失败标志:

ValidatorFactory factory = Validation.byProvider( HibernateValidator.class )
                             .configure()
                             .failFast( true )
                             .buildValidatorFactory();
您可以在此处找到此版本的完整变更日志。请通过Validator 论坛和 Jira 问题跟踪器提供反馈。

祝您愉快!

附言。对于所有 Seam 用户。Gunnar 开发了一个新的 Seam 3 模块,称为 SeamValidation,它提供了方法级别验证的 CDI 扩展等功能。去看看吧!

再附言。请确保也对我们应该包含在Bean Validation 1.1中的内容提供反馈


回到顶部