10.4 Bean Validationの機能およびBean Validationの動作

この節では,Bean Validationの機能およびBean Validationの動作について説明します。

Bean Validationの機能を次の表に示します。

表10-2 Bean Validationの機能

項番機能概要
1入力値の検証JavaBeanに設定した値を指定したバリデーション定義で検証する機能です。
 グループ管理機能検証をグループ化する機能です。
メッセージ管理機能検証結果がエラーの場合に返却するメッセージの管理を行う機能です。
ペイロード管理機能検証結果をカテゴリ分割する機能です。
2カスタムバリデータ作成機能独自の検証処理を作成する機能です。
3ブートストラップ機能Bean Validationプロバイダを変更できる機能です。
注※
Bean ValidationをJSFと連携して利用した場合,ペイロード管理機能を使用できません。

Bean Validationの機能は,アノテーションの指定によって利用できます。Bean Validation機能が提供するアノテーションクラス,指定可能な変数の型,および指定できない変数の型にアノテーションを指定した場合の動作を次の表に示します。

表10-3 Bean Validation機能が提供するアノテーションクラスとその変数の型

項番アノテーションクラス指定可能な変数の型指定できない変数の型にアノテーションを指定した場合の動作備考
1Nullすべての型に指定可能
2NotNullすべての型に指定可能
3AssertTrue
  • boolean/java.lang.Boolean
javax.validation.UnexpectedTypeExceptionがスローされます。
4AssertFalse
  • boolean/java.lang.Boolean
javax.validation.UnexpectedTypeExceptionがスローされます。
5Min
  • java.math.BigDecimal
  • java.math.BigInteger
  • byte/java.lang.Byte
  • short/java.lang.Short
  • int/java.lang.Integer
  • long/java.lang.Long
  • float/java.lang.Float
  • double/java.lang.Double
  • java.lang.String
javax.validation.UnexpectedTypeExceptionがスローされます。
6Max
  • java.math.BigDecimal
  • java.math.BigInteger
  • byte/java.lang.Byte
  • short/java.lang.Short
  • int/java.lang.Integer
  • long/java.lang.Long
  • float/java.lang.Float
  • double/java.lang.Double
  • java.lang.String
javax.validation.UnexpectedTypeExceptionがスローされます。
7DecimalMin
  • java.math.BigDecimal
  • java.math.BigInteger
  • java.lang.String
  • byte/java.lang.Byte
  • short/java.lang.Short
  • int/java.lang.Integer
  • long/java.lang.Long
  • float/java.lang.Float
  • double/java.lang.Double
javax.validation.UnexpectedTypeExceptionがスローされます。value属性に対して
java.math.BigDecimalで解析できない値を指定した場合,javax.validation.ValidationExceptionがスローされます。
8DecimalMax
  • java.math.BigDecimal
  • java.math.BigInteger
  • java.lang.String
  • byte/java.lang.Byte
  • short/java.lang.Short
  • int/java.lang.Integer
  • long/java.lang.Long
  • float/java.lang.Float
  • double/java.lang.Double
javax.validation.UnexpectedTypeExceptionがスローされます。value属性に対して
java.math.BigDecimalで解析できない値を指定した場合,javax.validation.ValidationExceptionがスローされます。
9Size
  • java.lang.String
  • java.util.Collection
  • java.util.Map
  • 配列
javax.validation.UnexpectedTypeExceptionがスローされます。max属性とmin属性に対して負の値を指定した場合,javax.validation.ValidationExceptionがスローされます。
minの値にmaxより大きい値をした場合,javax.validation.ValidationExceptionがスローされます。
10Digits
  • java.math.BigDecimal
  • java.math.BigInteger
  • java.lang.String
  • byte/java.lang.Byte
  • short/java.lang.Short
  • int/java.lang.Integer
  • long/java.lang.Long
  • float/java.lang.Float
  • double/java.lang.Double
javax.validation.UnexpectedTypeExceptionがスローされます。integer属性とfraction属性に対して負の値を指定した場合,javax.validation.ValidationExceptionがスローされます。
11Past
  • java.util.Date
  • java.util.Calendar
javax.validation.UnexpectedTypeExceptionがスローされます。
12Future
  • java.util.Date
  • java.util.Calendar
javax.validation.UnexpectedTypeExceptionがスローされます。
13Pattern
  • java.lang.String
javax.validation.UnexpectedTypeExceptionがスローされます。regexp属性に対して指定した値が正規表現として誤っていた場合,javax.validation.ValidationException例外がスローされます。
正規表現の妥当性はjava.util.regex.Patternの仕様に依存します。

(凡例)-:該当しない。