快速失败模式:调用failFast方法,传入参数true,默认值为false。
编码方式定义校验规则:创建ConstraintMapping对象,指定哪个对象,哪个属性,哪个校验规则注解。等同于在Car的manufacturer属性上添加@NotNull规则。
constraintMapping .type( Car.class ) .field( "manufacturer" ) .constraint( new NotNullDef() )
复合注解:@SupportedValidationTarget指定被校验主体的类型,@ConstraintComposition指定复合内部注解之间的关系。
@SupportedValidationTarget(ValidationTarget.ANNOTATED_ELEMENT) @ConstraintComposition(OR)
Path:可以查询校验对象的信息。
// 获取Path对象 Path path = constraintViolations.iterator().next().getPropertyPath(); // 迭代,node中包含相关信息 Path.Node node = nodeIterator.next();
DynamicPayLoad:获取动态的上下文,参考官网
国际化:调用defaultLocale方法,传入参数。
Validation.byProvider( HibernateValidator.class ) .configure() .defaultLocale( Locale.CHINA ) .buildValidatorFactory();
添加消息变量:
hibernateContext .addExpressionVariable( "now", now ) .buildConstraintViolationWithTemplate( "Must be after ${now}" ) .addConstraintViolation();
添加表达式参数:例如注解的属性值,
hibernateContext .addMessageParameter( "now", now ) .buildConstraintViolationWithTemplate( "Must be after {now}" ) .addConstraintViolation();
添加除注解之外的校验规则:with参数可以是任何的布尔表达式,或者是返回布尔类型的方法。
constraintMapping .constraintDefinition( ValidPassengerCount.class ) .validateType( Bus.class ) .with();
修改属性名称:默认情况下ConstraintValidation中包含的属性名称与校验对象中的属性名称相同,可以自定义PropertyNodeNameProvider实现类提供自定义实现。参考官网