はじめてのBean Validation その3

の続き。


今回は階層構造にあるBeanのバリデーションをしてみる。


たとえばBeanの中にListがあり、そのListで別のBeanをn件保持するというのはよくあることだと思う。

そして子も親と一緒に検証したいということもよくあることかと。


もちろんBean Validationでもそれは可能だ。


子のクラス。

public class InputBean2 {

    @Digits(integer=5,fraction=0)//5桁正数のみということ
    @NotNull
    BigDecimal data;

    public InputBean2() {
    }

    public InputBean2(BigDecimal data) {
        this.data = data;
    }

    
    public BigDecimal getData() {
        return data;
    }

    public void setData(BigDecimal data) {
        this.data = data;
    }
    
}


親のクラスは以下の行を追加。

    @Valid
    List<InputBean2> bean2 = new ArrayList<InputBean2>();
    {
        bean2.add(new InputBean2(new BigDecimal("1.5")));
        bean2.add(new InputBean2(new BigDecimal(12345)));
        bean2.add(new InputBean2(new BigDecimal(123456)));
    }

これでListに格納されているBeanもチェックされる。1つ目の1.5と3つ目の123456はエラーとなる。

ポイントは@Validというアノテーション。これがないと子まで検証されるということはない。明示しないと動かないようにというのはパフォーマンス等の問題もあるだろう。