Spring MVC 4.0 No. 019 Validatorでロジックを介した検証
今回はBean Validationのの複数のフィールドを対象とした検証です。
Bean Validationはその名前の通り、JavaBeansのテストの仕組みです。そのため、フィールドだけでなくgetterに対してテストをすることができます。(より詳しくは JSR 303 Bean Validationで遊んでみるよ!)
今回はgetter(isですが)を使ってロジックを介したテストを確認します。今までのBookクラスに定価フィールド(listPrice)を追加し、価格は定価よりも安くないといけないというテストを追加します。
@NotBlank private String name; @NotNull private Integer price; @NotNull private Integer listPrice; @AssertTrue(message = "{valid.price}") public boolean isValidPrice() { if (price == null || listPrice == null) { return true; } return listPrice >= price; }
isValidPrice()メソッドで、定価と価格のチェックをしています。いずれも@NotNullをつけているのでnullの場合には検証はOKとしています。
メッセージは置き換え文字列としているためvalid.priceを以下のように定義しています。
valid.price=価格は定価より安い値段にしてください。
ソースは https://github.com/kuwalab/spring-mvc40 にあります。タグ019が今回のサンプルです。
まとめ http://kuwalab.hatenablog.jp/entry/spring
最初 http://kuwalab.hatenablog.jp/entry/spring_mvc/001
前回 http://kuwalab.hatenablog.jp/entry/spring_mvc/018
次回 http://kuwalab.hatenablog.jp/entry/spring_mvc/020