2016-07-08 8 views
0

時にリストからいくつかの要素をexclued:JSR-303には、私はこのようなクラスを持って検証

class From{ 
    private List<SubForm> subForms; 
} 

class SubForm{ 

    @NotBlank 
    String name; 

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

は私がフォーム内のサブフォームのリストを検証する必要がありますが、私は偽= isValidatable返す要素を除外したいです。 Validator.validate()メソッドの前にFormオブジェクトを変更できません。私は標準の注釈を使うことも、自分のConstraintValidatorを書くこともできます。 私はそれをより良くすることができますか?

答えて

0

解決策が見つかりました。 私は自分の注釈を作成し、私はConstraintValidatorを作成するときに

@ConditionallyValidatedListItems 
private List<ConditionallyValidated> subforms = new ArrayList<>(); 

を検証したいリストの上にそれを追加します。私はgithubの https://github.com/YaroslavTir/jsr303-ConditionallyValidatedListItems

上の例を作成
Validation.buildDefaultValidatorFactory().getValidator(); 
//get item check if it necessry to validte it  
Set<ConstraintViolation<ConditionallyValidated>> validate = validator.validate(conditionallyValidated); 

必要な検証項目isValideメソッド内で、それならば、私はバリデータを取得します
関連する問題