我在我的 spring mvc 应用程序中使用 hibernate 验证器。通过以下简单的步骤,我就可以进行验证。
pom.xml
更改以添加休眠验证器。- 用一些约束注释了 Bean。
- 使用
@Valid
注释 Controller 方法参数。 - 处理了
MethodArgumentNotValidException
我不想向 bean 添加约束,而是想动态地将它们添加到 bean 中。这种动态添加需要在应用程序启动期间发生,并且只需发生一次。
在 hibernate 验证器文档中,我看到以下代码片段。
constraintMapping.type( Car.class ).property( "manufacturer", FIELD ).constraint( new NotNullDef() )
我的问题是,如何获取此 ConstraintMapping
实例的句柄?我看到 Spring 通过 LocalValidatorFactoryBean 实例化了 hibernate 验证器。
感谢您的帮助。
最佳答案
您可以从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,但您可能可以编写自己的。
关于spring-mvc - 在 spring mvc 应用程序中动态添加约束到 hibernate 验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617556/