【SpringBoot】よくお世話になるアノテーション – バリデーション編

SpringBootにおいてバリデーションを利用するとき
よくお世話になるバリデーション用アノテーションを紹介する。

nullチェック系

@javax.validation.constraints.Null

値がnullであることをチェックする。

@javax.validation.constraints.NotNull

値がnullではないことをチェックする。

フォームの空欄は、「空の文字列」としてみなされるため、
空欄判定でこのアノテーションはおすすめしない。

@org.hibernate.validator.NotEmpty

値がnullまたは空白だった場合エラーにする。
未入力を防ぐような時に用いる。

日付判定系

具体的にはDateCalendarおよびそのサブクラスなどを保管する項目で用いる。

@javax.validation.constraints.Future

日付に関するオブジェクトで利用する。
現在より先(未来)の日時のみを受け付けるようにする。

@javax.validation.constraints.Past

日付に関するオブジェクトで利用し、
現在より前(過去)の日時のみを受け付けるようにする。

数値の判定系

@javax.validation.constraints.Min, @javax.validation.constraints.Max

基本的な最小値、最大値判定。数値にのみ利用する。

@org.hibernate.validator.Range

引数に最小値、最大値を指定し、一定範囲内の値のみを入力できるようにする。

上記のmin,maxを同時に利用するときはこちらをおすすめする。

例:@Range(min=10, max=100)

文字列の判定系

@javax.validation.constraints.Size

これは文字列だけではなく、配列、コレクションなどいくつもの値をまとめて保管するオブジェクトで使われる。

そのオブジェクトに保管されている要素数を指定する。

Stringの要素数はすなわちlength(文字数)のことである。

引数に最小値、最大値を指定して利用する。

例:@Size(min=1, max=10)

@org.hibernate.validator.Length

Stringの値に利用され、文字列の長さ(文字数)の範囲を指定する。

引数によって最小値、最大値を指定する。

例:@Length(min=5, max=10)

@javax.validation.constraints.Pattern

Stringの値で利用し、正規表現でバリデーションをかける。

引数に正規表現のパターンを指定する。

他のアノテーションで賄えない、特殊なバリデーションを行いたい時に有効。

例:@Pattern(regexp="[a-zA-Z]+")

共通する引数

(全て検証していないが)ほとんどのアノテーションにはmessageという引数を追加することができる。

これを追加すると、バリデーションによってエラーになった際、
このメッセージを出力するようになる。

例:@NotEmpty(message = "空白は不可です")

まとめ

ここではよく使いがちな単純なアノテーションを紹介した。

ユーザーが入力することのできる値は、
できるだけバリデーションをかけておくことでバグを生みにくいプログラムを作成することができる。

タイトルとURLをコピーしました