7.10.3. Bean ValidationとNablarch Validationの機能比較¶
ここでは、Nablarchの提供するバリデーション機能と JSR349(外部サイト、英語) の機能比較を示す。
機能 | Bean Validation |
Nablarch Validation |
JSR 349 |
---|---|---|---|
バリデーション対象の項目を指定できる | ○ [1] | ○ 解説書へ |
○ |
階層構造を持つJava Beansオブジェクトに 対してバリデーションできる |
○ [2] | ○ 解説書へ |
○ |
メソッドの引数、戻り値に対してバリデーションできる | × [3] | × [3] | ○ |
相関バリデーションができる | ○ 解説書へ |
○ 解説書へ |
○ |
バリデーションの実行順序を指定できる | × [4] | ○ 解説書へ |
○ |
特定の項目の値を条件に バリデーション項目を切り替えることが出来る |
○ [5] | ○ 解説書へ |
○ |
エラーメッセージに埋め込みパラメータを使用できる | ○ [6] 解説書へ |
○ 解説書へ |
○ |
ドメインバリデーションができる | ○ 解説書へ |
○ 解説書へ |
× |
値の型変換ができる | × [7] | ○ 解説書へ |
× |
値の正規化ができる | × [8] | ○ 解説書へ |
× |
エラーメッセージに項目名を埋め込むことができる | ○ 解説書へ |
○ 解説書へ |
× |
[1] | Formの全ての項目に対してバリデーションを行うことで、不正な入力値の受付を防ぐことが出来る。 このため、Bean Validationでは、項目指定のバリデーション実行は推奨していない。 どうしても指定の項目に対してのみバリデーションを行いたい場合には、 ValidatorUtil#validate を使用すること。 |
[2] | 対応方法は、 JSR349(外部サイト、英語) の仕様に準拠する。 |
[3] | (1, 2) Nablarchでは外部からデータを受け付けたタイミングで必ずバリデーションを行うため、 メソッドの引数や戻り値に対するバリデーションには対応していない。 |
[4] | バリデーションの実行順を制御することはできないため、バリデーションの実行順序を期待するような実装は行わないこと。 例えば、項目毎のバリデーション後に相関バリデーションが実行されるといったことを期待してはならない。 |
[5] | JSR349(外部サイト、英語) のクラスレベルのバリデーション機能を使用して、ロジックによりバリデーション項目を切り替えること。 |
[6] | Bean Validationでは、EL式を使用してパラメータを埋め込むこともできる。 |
[7] | Bean Validationでは、プロパティの型は全てStringとして定義する(Stringで定義する理由)ため型変換は行わない。 型変換が必要な場合には、バリデーション実施後に BeanUtil を使って型変換を行う。 |
[8] | 正規化は、Bean Validationの機能ではなくハンドラとして提供している。正規化が必要な場合には、 ノーマライズハンドラ を使用して行う。 |