コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

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