jakarta.validationによるアノテーション

7.4 jakarta.validationによるアノテーション

Spring bootで利用するバリデーションは、2種類のライブラリによって用意されています。1つはjakarta.validationパッケージのライブラリファイルです。このパッケージ内(正確には、jakarta.validation.constraintsパッケージ)には、多数のバリデーション用のアノテーションが用意されています。順に整理しておきましょう。

7.4.1 @Null、@NotNull

この2つはセットといってよいでしょう。それぞれ「値がnullである」「値がnullでない」ということをチェックします。引数はなく、ただアノテーションを記述するだけです。
注意したいのは、例えばString値の項目があったとき、フォームの入力フィールドに何も書かずに送信したとしても、@NotNullは機能しない、という点でしょう。何も書かなくとも、送信された値はnullではなく「空の文字列」になるからです(そのため、テキストのサンプルでは@NotNullではなく、@NotEmptyを使っていました)。

7.4.2 @Min、@Max

数値(整数)を入力する項目で、入力可能な値の最小値、最大値を指定します。引数が1つあり、それぞれ最小値、最大値となる値を用意します。

7.4.3 @Digits

数値入力のためのアノテーションですが、単純に値の大小をチェックするのではありません。これは、整数部分と小数部分の桁数制限を行ないます。引数が2つあり、「integer」で整数桁数を、「fraction」で小数桁数をそれぞれ指定します。これらの引数は、()内に「integer=10, fraction=10」といった具合に、それぞれの項目にイコールで値を代入するような形で記述をします。

7.4.4 @Future、@Past

日時に関するオブジェクトで利用します。具体的にはDate、Calendarおよびそのサブクラスなどを保管する項目で用いられます。
@Futureは現在より先(つまり未来)の日時、@Pastは現在より前(つまり過去)の日時のみを受け付けるようにします。引数はどちらもありません。

7.4.5 @Size

文字列(String)のほか、配列、コレクションクラスなど、「いくつもの値をまとめて保管するオブジェクト」で使われ、そのオブジェクトに保管される要素数を指定します。
引数に指定できる値が2つ用意されており、「min」では最小数、「max」では最大数を指定できます。「Stringの要素数って?」と思うでしょうが、これはlength(すなわち文字数)になります。

7.4.6 @Pattern

String値の項目で使います。Patternという名前から想像がつく通り、正規表現のパターンを指定して入力チェックを行ないます。引数には「regexp」という値にパターンの文字列を指定します。

7.4.7 @NotEmpty

サンプルで使いましたね。Stringの項目で、値がnullまたは空白だった場合エラーにします。未入力を防ぐようなときに用いられます。引数には「message」という値に未入力時に表示する文字列を指定します。


NEXT>> 7.5 Hibernate Validatorによるアノテーション