2016-07-08 2 views
0

У меня есть класс, как это:JSR-303 exclued некоторые элементы из списка во время проверки

class From{ 
    private List<SubForm> subForms; 
} 

class SubForm{ 

    @NotBlank 
    String name; 

    @Max(value=100) 
    Integer count; 
    ... 
    public boolen isValidatable(){ 
     .... 
    } 
} 

Мне нужно, чтобы проверить список Подчиненные внутри формы, но я хочу, чтобы исключить элемент, возвращать isValidatable = ложь. Я не могу заразить объект Form до метода Validator.validate(). Я могу использовать стандартные аннотации или написать собственный ConstraintValidator. как я могу сделать это лучше?

ответ

0

Я нахожу решение. я создал свою собственную аннотацию и добавить его выше список Я хочу проверить

@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

Смежные вопросы