組み込みバリデーション
Play にはいくつか組み込みバリデーションが用意されており、使用方法は バリデーション の章で説明されています。
バリデーションにはそれぞれエラーメッセージが関連づけられています。エラーメッセージは PLAY_HOME/resources/messages
に定義され、キーは validation.
の後にバリデーションの名前が付いたものです。この定義は同一のキーでアプリケーションの conf/messages
ファイルにメッセージを定義することで上書きすることが出来ます。また他言語用のメッセージファイルを使うことでローカライズすることも出来ます。
メールアドレス形式かどうかをチェックします。
validation.email(address);
アノテーション構文:
@Email String address
メッセージキー: validation.email
equals
他のパラメータの値と等しいかどうかをチェックします。チェックには検証値の equals
メソッドが使用されます。例えばパスワードの確認フィールドのチェックに使用します。
validation.equals(password, passwordConfirmation);
アノテーション構文:
@Equals("passwordConfirmation") String password
メッセージキー: validation.equals
future
未来の日付かどうかをチェックします。2番目の日付が基準日として指定された場合、基準日に対して未来、言い換えると基準日よりも後でなければいけません。
validation.future(dueDate);
validation.future(dueDate, shipmentDate);
アノテーション構文:
@InFuture String dueDate
@InFuture("1979-12-31") String birthDate
メッセージキー: validation.future
ipv4Address
バージョン 4 のプロトコルに沿った IP アドレスかどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。
validation.ipv4Address(value);
アノテーション構文:
@IPv4Address String ip
メッセージキー: validation.ipv4
ipv6Address
バージョン 6 のプロトコルに沿った IP アドレスかどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。
validation.ipv6Address(value);
アノテーション構文:
@IPv6Address String ip
メッセージキー: validation.ipv6
isTrue
true
と評価される String
または Boolean
かどうかをチェックします。例えばチェック必須の ‘規約に同意します’ のチェックボックスがチェックされているかどうかや、非ゼロの Number
かどうかをチェックするときに使用します。ヌル値は false または不正な値だとみなされます。
validation.isTrue(agree);
アノテーション構文:
@IsTrue String agree
メッセージキー: validation.isTrue
match
指定された正規表現にマッチするかどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。
validation.match(abbreviation, "[A-Z]{3}"); // TLA
アノテーション構文:
@Match("[A-Z]{3}") String abbreviation
メッセージキー: validation.match
max
指定された数値以下の String
または Number
であるかどうかをチェックします。ヌル値は有効な値 (valid) だと見なされます。
validation.max(wordCount, 7500); // Short story
アノテーション構文:
@Max(7500) String wordCount
メッセージキー: validation.max
maxSize
指定された長さ以下の String
かどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。
validation.maxSize(url, 2083); // IE 4.0 - 8
アノテーション構文:
@MaxSize(2083) String value
メッセージキー: validation.maxSize
min
指定された数値以上の String
または Number
かどうかをチェックします。ヌル値は有効な値 (valid) だと見なされます。
validation.min(age, 18); // Adult
アノテーション構文:
@Min(18) Long age
メッセージキー: validation.min
minSize
指定された長さ以上の String
かどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。
validation.minSize(value, 42);
アノテーション構文:
@MinSize(42) String value
メッセージキー: validation.minSize
past
過去の日付かどうかをチェックします。2番目の日付が基準日として指定された場合、基準日に対して過去、言い換えると基準日よりも前でなければいけません。
validation.past(actualDepartureDate);
validation.past(expectedDepartureDate, expectedArrivalDate);
アノテーション構文:
@InPast String actualDepartureDate
@InPast("1980-01-01") String birthDate
メッセージキー: validation.past
phone
正当な電話番号かどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。バリデーションは厳密ではなく、基本的な電話番号のパターンに沿っているかどうかをチェックするだけです。国固有のバリデーションは独自の @Match を実装してください。
validation.phone(value);
アノテーション構文:
@Phone String phone
メッセージキー: validation.phone
フォーマット: +CCC (SSSSSS)9999999999xEEEE
+
任意の国コードマーク。CCC
任意の国コード。3 桁以下で、直後に区切り文字が必要です。(SSSSSS)
任意のサブゾーン。6 桁以下。9999999999
必須の番号。20 桁以下 (現在と未来の既知のケースが全て網羅されているべきです)。x
任意の拡張。“ext” や “extension” と書くことも出来ます。EEEE
任意の拡張番号。最大 4 桁。- 区切り文字には 半角スペース、@-@,
.
や/
を使用可能で、番号のどこにでも使うことが出来ます。
アメリカ:(305) 613 09 58 ext 101
フランス:+33 1 47 37 62 24 x3
ドイツ:+49-4312 / 777 777
中国:+86 (10)69445464
イギリス:(020) 1234 1234
range
指定された 2 つの数値の範囲に含まれる数値かどうかをチェックします。
validation.range(wordCount, 17500, 40000); // 短編小説
アノテーション構文:
@Range(min = 17500, max = 40000) String wordCount
メッセージキー: validation.range
required
String
, Collection
, File
または配列が空でないかどうかをチェックします。
validation.required(value);
アノテーション構文:
@Required String value
メッセージキー: validation.required
unique
データベースに問い合わせることで、このアノテーションを持つカラムの値がユニークであることをチェックします。(JPA によってのみ動作します) 追加のカラムをカンマ区切りのリストとしてアノテーションの値に定義することができます。このため、 c
と呼ばれるプロパティを @Unique(“a, b”)
で注釈すると、プロパティ a
, b
そして c
の値の組み合わせがユニークであることをチェックします。
アノテーション構文:
@Unique(additionalColumns) String productCode
@Unique("postCode") String houseNumber
メッセージキー: validation.unique
url
正当な URL かどうかをチェックします。空文字列は有効な値 (valid) だと見なされます。(RFC 1738 に定義されている) 正当な URL が全て受け入れられるわけではないことに注意してください。@http@, https
と ftp
スキーマの URL だけが有効な値 (valid) だと見なされます。
validation.url(value);
アノテーション構文:
@URL String address
メッセージキー: validation.url