我正在使用jsr303验证用户输入。我想知道是否有一种方法可以默认在类的所有属性上添加注释。
例如
public String getName();
public String getAddress();
public String getEmployerName();
public String getEmployerAddress();
现在我没有将所有这些注释为@NotNull / @NotBlank,而是在寻找一种方法,如果我可以默认在所有返回String的属性上设置此验证检查。我正在寻找这样的东西的唯一原因是,我认为更容易忘记将这个注释放在任何属性上,从而打开一个bug。
我非常感谢您的回复。
答案 0 :(得分:1)
我不知道现成的解决方案,但您可以为programmatic constraint declaration使用Hibernate Validator的API来实现此目的:
E.g。像这样的字段:
List<Field> stringFields = ...;
HibernateValidatorConfiguration configuration = Validation
.byProvider( HibernateValidator.class )
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
for(Field field : stringFields) {
constraintMapping
.type( MyBean.class )
.property( field.getName(), FIELD )
.constraint( new NotNullDef() )
.constraint( new NotBlankDef() );
}
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();