インターフェース Validator
- すべての既知のサブインターフェース:
SmartValidator
- すべての既知の実装クラス:
CustomValidatorBean、LocalValidatorFactoryBean、OptionalValidatorFactoryBean、SpringValidatorAdapter
このインターフェースは、インフラストラクチャやコンテキストとは完全に切り離されています。つまり、Web 層、データアクセス層、その他の層のオブジェクトのみを検証することとは連動していません。そのため、アプリケーションのどのレイヤーでも使用でき、検証ロジックのカプセル化を第一級オブジェクトとして独自にサポートします。
実装は、静的ファクトリメソッド forInstanceOf(Class, BiConsumer) または forType(Class, BiConsumer) を介して作成できます。以下は、UserLogin インスタンスのさまざまな StringSE プロパティが空ではない (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> ValidatorforInstanceOf(ClassSE<T> targetClass, BiConsumerSE<T, Errors> delegate) ターゲットオブジェクトがtargetClassのインスタンスであるSEかどうかをチェックするValidatorを返し、そうであれば、指定されたdelegateを適用してErrorsを設定します。static <T> ValidatorforType(ClassSE<T> targetClass, BiConsumerSE<T, Errors> delegate) ターゲットオブジェクトのクラスがtargetClassと同一かどうかをチェックするValidatorを返し、同一であれば、指定されたdelegateを適用してErrorsを設定します。booleanvoid指定されたtargetオブジェクトを検証します。このオブジェクトは、supports(Class)メソッドが通常trueを返した (または返すことになる)ClassSE である必要があります。default ErrorsvalidateObject(ObjectSE target) 指定されたtargetオブジェクトを個別に検証します。
メソッドの詳細
supports
validate
指定されたtargetオブジェクトを検証します。このオブジェクトは、supports(Class)メソッドが通常trueを返した (または返すことになる)ClassSE である必要があります。提供された
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