はじめての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というアノテーション。これがないと子まで検証されるということはない。明示しないと動かないようにというのはパフォーマンス等の問題もあるだろう。