インターフェース Validator
- すべての既知のサブインターフェース:
SmartValidator
- すべての既知の実装クラス:
CustomValidatorBean
、LocalValidatorFactoryBean
、OptionalValidatorFactoryBean
、SpringValidatorAdapter
このインターフェースは、インフラストラクチャやコンテキストとは完全に切り離されています。つまり、Web 層、データアクセス層、その他の層のオブジェクトのみを検証することとは連動していません。そのため、アプリケーションのどのレイヤーでも使用でき、検証ロジックのカプセル化を第一級オブジェクトとして独自にサポートします。
実装は、静的ファクトリメソッド forInstanceOf(Class, BiConsumer)
または forType(Class, BiConsumer)
を介して作成できます。以下は、UserLogin
インスタンスのさまざまな String
SE プロパティが空ではない (null
ではなく、完全に空白で構成されていない) こと、および存在するパスワードの長さが少なくとも 'MINIMUM_PASSWORD_LENGTH'
文字であることを検証する、単純だが完全な Validator
です。
Validator userLoginValidator = Validator.forInstance(UserLogin.class, (login, errors) -> { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required"); if (login.getPassword() != null && login.getPassword().trim().length() < MINIMUM_PASSWORD_LENGTH) { errors.rejectValue("password", "field.min.length", new Object[]{Integer.valueOf(MINIMUM_PASSWORD_LENGTH)}, "The password must be at least [" + MINIMUM_PASSWORD_LENGTH + "] characters in length."); } });
Validator
インターフェースとエンタープライズアプリケーションにおけるそのロールの詳細については、Spring リファレンスマニュアルも参照してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Toshiaki Maki, Arjen Poutsma
- 関連事項:
メソッドのサマリー
修飾子と型メソッド説明static <T> Validator
forInstanceOf
(ClassSE<T> targetClass, BiConsumerSE<T, Errors> delegate) ターゲットオブジェクトがtargetClass
のインスタンスであるSEかどうかをチェックするValidator
を返し、そうであれば、指定されたdelegate
を適用してErrors
を設定します。static <T> Validator
forType
(ClassSE<T> targetClass, BiConsumerSE<T, Errors> delegate) ターゲットオブジェクトのクラスがtargetClass
と同一かどうかをチェックするValidator
を返し、同一であれば、指定されたdelegate
を適用してErrors
を設定します。boolean
void
指定されたtarget
オブジェクトを検証します。このオブジェクトは、supports(Class)
メソッドが通常true
を返した (または返すことになる)Class
SE である必要があります。default Errors
validateObject
(ObjectSE target) 指定されたtarget
オブジェクトを個別に検証します。
メソッドの詳細
supports
validate
指定されたtarget
オブジェクトを検証します。このオブジェクトは、supports(Class)
メソッドが通常true
を返した (または返すことになる)Class
SE である必要があります。提供された
errors
インスタンスは、通常、このバリデーターが参加する大規模なバインディングプロセスの一部として、結果として生じる検証エラーを報告するために使用できます。バインディングエラーは、通常、この呼び出しの前にerrors
インスタンスに事前登録されています。- パラメーター:
target
- 検証されるオブジェクトerrors
- 検証プロセスに関するコンテキスト状態- 関連事項:
validateObject
指定されたtarget
オブジェクトを個別に検証します。共通の
validate(Object, Errors)
メソッドにデリゲートします。返されたerrors
インスタンスは、特定のターゲットオブジェクトに対して結果として生じる検証エラーを報告するために使用できます。if (validator.validateObject(target).hasErrors())...
またはvalidator.validateObject(target).failOnError(IllegalStateException::new));
。メモ: この検証呼び出しには、使用される
Errors
実装に制限があり、特にネストされたパスはサポートされません。これでは目的にとって不十分な場合は、BeanPropertyBindingResult
などのバインディング可能なErrors
実装を使用して、通常のvalidate(Object, Errors)
メソッドを呼び出します。- パラメーター:
target
- 検証されるオブジェクト- 戻り値:
- 指定されたオブジェクトの検証で発生したエラー
- 導入:
- 6.1
- 関連事項:
forInstanceOf
ターゲットオブジェクトがtargetClass
のインスタンスであるSEかどうかをチェックするValidator
を返し、そうであれば、指定されたdelegate
を適用してErrors
を設定します。例:
Validator passwordEqualsValidator = Validator.forInstanceOf(PasswordResetForm.class, (form, errors) -> { if (!Objects.equals(form.getPassword(), form.getConfirmPassword())) { errors.rejectValue("confirmPassword", "PasswordEqualsValidator.passwordResetForm.password", "password and confirm password must be same."); } });
- 型パラメーター:
T
- ターゲットオブジェクト型- パラメーター:
targetClass
- 返されたバリデーターによってサポートされるクラスdelegate
- ターゲットオブジェクトで呼び出される関数 (型 T のインスタンスの場合)- 戻り値:
- 作成された
Validator
- 導入:
- 6.1
forType
ターゲットオブジェクトのクラスがtargetClass
と同一かどうかをチェックするValidator
を返し、同一であれば、指定されたdelegate
を適用してErrors
を設定します。例:
Validator passwordEqualsValidator = Validator.forType(PasswordResetForm.class, (form, errors) -> { if (!Objects.equals(form.getPassword(), form.getConfirmPassword())) { errors.rejectValue("confirmPassword", "PasswordEqualsValidator.passwordResetForm.password", "password and confirm password must be same."); } });
- 型パラメーター:
T
- ターゲットオブジェクト型- パラメーター:
targetClass
- 返されたバリデーターによってサポートされる正確なクラス (サブクラスなし)delegate
- ターゲットオブジェクトで呼び出される関数 (型 T のインスタンスの場合)- 戻り値:
- 作成された
Validator
- 導入:
- 6.1