Hibernate Validator 4.2.0.Beta2 已打包,可通过 JBoss Maven 仓库 或 SourceForge 消费。
从 Beta1 开始,我们专注于方法级别的验证细节和错误修复。其中一个重要问题是 HV-421,它定义了参数约束验证的行为。通常,逻辑与(AND)用于组合在给定字段或方法中定义的类层次结构内的所有约束。但是,对于方法参数约束,这样做会导致与 编程合约 定义的不明确性,其中子类型只能削弱超类型定义的前置条件。为了支持这一点,必须使用或(OR)组合一个层次结构中所有的参数约束。一个保守的替代方案(我们为这次发布选择的方案)是在类层次结构中的相同参数上禁止多个参数约束。HV-421 讨论了更多细节。我们非常欢迎对此提供反馈。
另一个与方法级别验证相关的功能是对元数据 API 的扩展 (HV-440)。我们引入了三个额外的接口 TypeDescriptor、MethodDescriptor 和 ParameterDescriptor,它们都可以在 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中的内容提供反馈