我有这样的课程:
class From{
private List<SubForm> subForms;
}
class SubForm{
@NotBlank
String name;
@Max(value=100)
Integer count;
...
public boolen isValidatable(){
....
}
}
我需要验证Form中的子表单列表,但我想排除返回isValidatable = false的元素。 我不能在Validator.validate()方法之前使用Form对象。我可以使用标准注释或编写自己的ConstraintValidator。 我怎么能做得更好?
答案 0 :(得分:0)
我找到解决方案。 我创建了自己的注释并将其添加到List I want validate
上方@ConditionallyValidatedListItems
private List<ConditionallyValidated> subforms = new ArrayList<>();
然后我创建ConstraintValidator。我在isValide方法中获得验证器,如果有必要验证项目
Validation.buildDefaultValidatorFactory().getValidator();
//get item check if it necessry to validte it
Set<ConstraintViolation<ConditionallyValidated>> validate = validator.validate(conditionallyValidated);
我在github上创建了一个例子 https://github.com/YaroslavTir/jsr303-ConditionallyValidatedListItems