我在我的spring mvc app中使用了hibernate验证器。通过以下简单步骤,我可以进行验证。
pom.xml
更改以添加hibernate验证器。@Valid
注释控制器方法参数。MethodArgumentNotValidException
我不想将约束添加到bean中,而是想要动态地将它们添加到bean中。这种动态添加需要在应用程序启动期间发生,只需一次。
在hibernate验证器文档中,我看到以下代码段。
constraintMapping.type( Car.class ).property( "manufacturer", FIELD ).constraint( new NotNullDef() )
我的问题是,如何获得此ConstraintMapping
实例的句柄?我看到Spring通过LocalValidatorFactoryBean
实例化了hibernate验证器。
谢谢你的帮助。
答案 0 :(得分:1)
你可以从 HibernateValidatorConfiguration - http://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html_single/#section-programmatic-api
获得它HibernateValidatorConfiguration configuration = Validation
.byProvider( HibernateValidator.class )
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.type( Car.class )
.property( "manufacturer", FIELD )
.constraint( new NotNullDef() )
.property( "licensePlate", FIELD )
.ignoreAnnotations()
.constraint( new NotNullDef() )
.constraint( new SizeDef().min( 2 ).max( 14 ) )
.type( RentalCar.class )
.property( "rentalStation", METHOD )
.constraint( new NotNullDef() );
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();
然而,这意味着您可能无法使用LocalValidatorFactoryBean,但您可能只能编写自己的。