Bean Validatorによるバリデーション (2/6)
作成:2017-10-28 10:18
更新:2017-10-28 10:18
更新:2017-10-28 10:18
■エンティティの設定
Bean Validatorを利用する場合、大きく2つの場所にコードを用意する必要があります。1つは、エンティティクラスで、ここにそれぞれのフィールドごとに設定するバリデーションルールの指定を行います。そして、実際にエンティティを保存するような処理の部分(サーブレットなど)に、バリデーションをチェックするための処理を用意します。
まず、エンティティクラス側の記述から説明しましょう。エンティティクラスでは、値を保管するためのフィールドに、バリデーションルールのアノテーションを付けることでルール設定を行います。
これは、具体的な例を見たほうがわかりやすいでしょう。下のリストは、MyDataEntityクラスにバリデーションを設定したものです。ここでは、以下のようなアノテーションが追加されています。
nameには、@NotEmptyが設定されています。これは「空の値を禁止する」というバリデーションルールです。これを指定することで、ここには必ず何らかの値を用意しなければいけなくなります。空の文字列などは禁止です。
mailには、@NotEmptyの他に、@Emailというアノテーションが付けられています。これは、メールアドレスの形式の値のみ許可するバリデーションルールです。これを付けると、メールアドレスの形式のテキストのみを受け付けるようになります。
この2つのアノテーションは、実は微妙に種類が違います。追記されるimport文を見て下さい。以下のようになっていますね。
@NotEmptyは、javax.validation.constraintsパッケージにあります。これは、標準的なBean Validatorの機能です。
これに対し、@Emailは、org.hibernate.validator.onstraintsパッケージです。これは、このプロジェクトで使っているBean Validatorの実装であるhibernate-validatorの機能なのです。バリデーションと一口にいっても、このように微妙な違いがあるのです。
まず、エンティティクラス側の記述から説明しましょう。エンティティクラスでは、値を保管するためのフィールドに、バリデーションルールのアノテーションを付けることでルール設定を行います。
これは、具体的な例を見たほうがわかりやすいでしょう。下のリストは、MyDataEntityクラスにバリデーションを設定したものです。ここでは、以下のようなアノテーションが追加されています。
@NotEmpty
private String name;
nameには、@NotEmptyが設定されています。これは「空の値を禁止する」というバリデーションルールです。これを指定することで、ここには必ず何らかの値を用意しなければいけなくなります。空の文字列などは禁止です。
@NotEmpty
private String mail;
mailには、@NotEmptyの他に、@Emailというアノテーションが付けられています。これは、メールアドレスの形式の値のみ許可するバリデーションルールです。これを付けると、メールアドレスの形式のテキストのみを受け付けるようになります。
■javax.validationとそれ以外のもの
この2つのアノテーションは、実は微妙に種類が違います。追記されるimport文を見て下さい。以下のようになっていますね。
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Email;
@NotEmptyは、javax.validation.constraintsパッケージにあります。これは、標準的なBean Validatorの機能です。
これに対し、@Emailは、org.hibernate.validator.onstraintsパッケージです。これは、このプロジェクトで使っているBean Validatorの実装であるhibernate-validatorの機能なのです。バリデーションと一口にいっても、このように微妙な違いがあるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
// ※以下のimportを追加 import javax.validation.constraints.NotEmpty; import org.hibernate.validator.constraints.Email; @Entity public class MyDataEntity { @Id @GeneratedValue private Integer id; @NotEmpty private String name; @NotEmpty @Email private String mail; private String tel; private Date created = Calendar.getInstance().getTime(); ……以下略……
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る