我想在一个大对象上使用像@NotNull, @Size
等BeanValidation机制。我只想验证我使用的某些属性。
该对象来自外部库,因此我无法为其getter添加注释。我也不想手动创建自己的对象并制作项目的深层副本。
我是否可以在类无法更改的类上使用BeanValidation框架?类似于:
class MyValidator {
@NotNull
static String getUsername(ExternalClass ext) {
return ext.getUser();
}
}
答案 0 :(得分:2)
正如mvb13所说,您可以使用基于XML的配置。如果您正在使用Hibernate Validator作为您的BV提供商,您还可以利用API for programmatic constraint declaration:
HibernateValidatorConfiguration configuration = Validation
.byProvider( HibernateValidator.class )
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.type( ExternalClass.class )
.property( "someProperty", FIELD )
.constraint( new NotNullDef() )
.constraint( new SizeDef().min( 2 ).max( 14 ) )
.type( AnotherExternalClass.class )
.property( "anotherProperty", METHOD )
.constraint( new NotNullDef() );
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();
答案 1 :(得分:0)
存在使用xml config描述验证规则的变体。这是它在Hibernate https://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-xmlconfiguration.html中实现的方式 在这种情况下,您无需更改源代码。