public class SpringValidatorAdapter extends ObjectSE implements SmartValidator, ValidatorEE
javax.validator.Validator を取り、それを Spring Validator として公開すると同時に、元の JSR-303 Validator インターフェース自体を公開するアダプター。 プログラムによるラッパーとして使用できます。CustomValidatorBean および LocalValidatorFactoryBean の基本クラスとして、また SmartValidator インターフェースの主要な実装としても機能します。
Spring Framework 5.0 以降、このアダプターは Bean 検証 1.1 および 2.0 と完全に互換性があります。
SmartValidator, CustomValidatorBean, LocalValidatorFactoryBean| コンストラクターと説明 |
|---|
SpringValidatorAdapter(ValidatorEE targetValidator) 指定された JSR-303 バリデーターの新しい SpringValidatorAdapter を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected StringSE | determineErrorCode(ConstraintDescriptorEE<?> descriptor) 指定された制約記述子の Spring 報告エラーコードを決定します。 |
protected StringSE | determineField(ConstraintViolationEE<ObjectSE> violation) 指定された制約違反のフィールドを決定します。 |
ExecutableValidatorEE | forExecutables() |
protected ObjectSE[] | getArgumentsForConstraint(StringSE objectName, StringSE field, ConstraintDescriptorEE<?> descriptor) 指定されたフィールドの検証エラーの FieldError 引数を返します。 |
BeanDescriptorEE | getConstraintsForClass(ClassSE<?> clazz) |
protected ObjectSE | getRejectedValue(StringSE field, ConstraintViolationEE<ObjectSE> violation, BindingResult bindingResult)Spring エラー表現による露出のために、指定された制約違反の背後にある拒否された値を抽出します。 |
protected MessageSourceResolvable | getResolvableField(StringSE objectName, StringSE field) 指定されたフィールドの解決可能なラッパーを構築し、 MessageSource のフィールド名を解決できるようにします。 |
protected void | processConstraintViolations(SetSE<ConstraintViolationEE<ObjectSE>> violations, Errors errors) 指定された JSR-303 ConstraintViolations を処理し、対応するエラーを提供された Spring Errors オブジェクトに追加します。 |
protected boolean | requiresMessageFormat(ConstraintViolationEE<?> violation) この違反の補間されたメッセージにプレースホルダーが残っているため、 MessageFormatSE を適用する必要があるかどうかを示します。 |
boolean | supports(ClassSE<?> clazz) |
<T> T | unwrap(ClassSE<T> type) |
void | validate(ObjectSE target, Errors errors) 提供された target オブジェクトを検証します。これは、Validator.supports(Class) メソッドが通常 true を返す(または返すと想定される)ClassSE でなければなりません。 |
void | validate(ObjectSE target, Errors errors, ObjectSE... validationHints) |
<T> SetSE<ConstraintViolationEE<T>> | validate(T object, ClassSE<?>... groups) |
<T> SetSE<ConstraintViolationEE<T>> | validateProperty(T object, StringSE propertyName, ClassSE<?>... groups) |
void | validateValue(ClassSE<?> targetType, StringSE fieldName, ObjectSE value, Errors errors, ObjectSE... validationHints) ターゲット型の指定されたフィールドに指定された値を検証し、値がターゲットクラスのインスタンスのフィールドにバインドされる場合と同じ検証エラーを報告します。 |
<T> SetSE<ConstraintViolationEE<T>> | validateValue(ClassSE<T> beanType, StringSE propertyName, ObjectSE value, ClassSE<?>... groups) |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic SpringValidatorAdapter(ValidatorEE targetValidator)
targetValidator - ラップする JSR-303 バリデーター public void validate(ObjectSE target, Errors errors)
Validatortarget オブジェクトを検証します。これは、Validator.supports(Class) メソッドが通常 true を返す(または返すと想定される)ClassSE でなければなりません。 提供された errors インスタンスを使用して、結果の検証エラーを報告できます。
target - 検証されるオブジェクト errors - 検証プロセスに関するコンテキスト状態 ValidationUtilspublic void validate(ObjectSE target, Errors errors, ObjectSE... validationHints)
SmartValidatortarget オブジェクトを検証します。これは、Validator.supports(Class) メソッドが通常 true を返す ClassSE 型でなければなりません。 提供された errors インスタンスを使用して、結果の検証エラーを報告できます。
validate() のこのバリアントは、JSR-303 プロバイダーに対する検証グループなどの検証ヒントをサポートします(この場合、提供されるヒントオブジェクトは、型 Class のアノテーション引数である必要があります)。
メモ: 検証ヒントは、実際のターゲット Validator によって無視される場合があります。その場合、このメソッドは通常の Validator.validate(Object, Errors) 兄弟と同様に動作するはずです。
SmartValidator の validate target - 検証されるオブジェクト errors - 検証プロセスに関するコンテキスト状態 validationHints - 検証エンジンに渡される 1 つ以上のヒントオブジェクト Validator.validate(Object, Class[])EEpublic void validateValue(ClassSE<?> targetType, StringSE fieldName, @Nullable ObjectSE value, Errors errors, ObjectSE... validationHints)
SmartValidatorSmartValidator の validateValue targetType - ターゲット型 fieldName - フィールドの名前 value - 候補値 errors - 検証プロセスに関するコンテキスト状態 validationHints - 検証エンジンに渡される 1 つ以上のヒントオブジェクト Validator.validateValue(Class, String, Object, Class[])EEprotected void processConstraintViolations(SetSE<ConstraintViolationEE<ObjectSE>> violations, Errors errors)
Errors オブジェクトに追加します。violations - JSR-303 ConstraintViolation の結果 errors - 登録する Spring エラーオブジェクト protected StringSE determineField(ConstraintViolationEE<ObjectSE> violation)
デフォルトの実装は、文字列化されたプロパティパスを返します。
violation - 現在の JSR-303 ConstraintViolationErrors で使用)ConstraintViolation.getPropertyPath()EE, FieldError.getField()protected StringSE determineErrorCode(ConstraintDescriptorEE<?> descriptor)
デフォルトの実装は、記述子のアノテーション型の単純なクラス名を返します。構成された MessageCodesResolver は、オブジェクト名とフィールド名を含むエラーコードのバリエーションを自動的に生成することに注意してください。
descriptor - 現在の違反の JSR-303 ConstraintDescriptorErrors で使用)ConstraintDescriptor.getAnnotation()EE, MessageCodesResolverprotected ObjectSE[] getArgumentsForConstraint(StringSE objectName, StringSE field, ConstraintDescriptorEE<?> descriptor)
デフォルトの実装は、フィールド名を示す最初の引数を返します(getResolvableField(java.lang.String, java.lang.String) を参照)。その後、実際のすべての制約アノテーション属性(つまり、「メッセージ」、「グループ」、「ペイロード」を除く)を属性名のアルファベット順に追加します。
たとえば、次のようにオーバーライドできます。制約記述子からさらに属性を追加します。
objectName - ターゲットオブジェクトの名前 field - バインディングエラーの原因となったフィールド descriptor - JSR-303 制約記述子 DefaultMessageSourceResolvable.getArguments(), DefaultMessageSourceResolvable, DefaultBindingErrorProcessor.getArgumentsForBindError(java.lang.String, java.lang.String)protected MessageSourceResolvable getResolvableField(StringSE objectName, StringSE field)
MessageSource のフィールド名を解決できるようにします。 デフォルトの実装では、フィールドを示す最初の引数が返されます。この引数は、型が DefaultMessageSourceResolvable で、コードとして "objectName.field" と "field"、デフォルトのメッセージとしてプレーンフィールド名を持ちます。
objectName - ターゲットオブジェクトの名前 field - バインディングエラーの原因となったフィールド MessageSourceResolvable getArgumentsForConstraint(java.lang.String, java.lang.String, javax.validation.metadata.ConstraintDescriptor<?>)@Nullable protected ObjectSE getRejectedValue(StringSE field, ConstraintViolationEE<ObjectSE> violation, BindingResult bindingResult)
field - バインディングエラーの原因となったフィールド violation - 対応する JSR-303 ConstraintViolationbindingResult - 現在のフィールドの値を含むバッキングオブジェクトの Spring BindingResultConstraintViolation.getInvalidValue()EE, FieldError.getRejectedValue()protected boolean requiresMessageFormat(ConstraintViolationEE<?> violation)
MessageFormatSE を適用する必要があるかどうかを示します。Spring の MessageSource のデフォルトメッセージとしてレンダリングされるときに、Bean 検証定義メッセージ(ValidationMessages.properties から出力される)のために呼び出されます。 デフォルトの実装では、フィールド名の Spring スタイルの "{0}" プレースホルダーを MessageFormatSE の指示と見なします。他のプレースホルダーまたはエスケープ構文の出現は、通常、不一致であり、正規表現パターン値などから生じます。標準の Bean 検証では、"{0}" スタイルのプレースホルダーはまったくサポートされていないことに注意してください。これは、Spring MessageSource リソースバンドルで通常使用される機能です。
violation - メッセージ内の名前付き属性参照の BV 定義の補間を含む、Bean 検証制約違反 java.text.MessageFormat を適用する場合は true、違反のメッセージをそのまま使用する場合は false getArgumentsForConstraint(java.lang.String, java.lang.String, javax.validation.metadata.ConstraintDescriptor<?>)public <T> SetSE<ConstraintViolationEE<T>> validate(T object, ClassSE<?>... groups)
ValidatorEE の validateEE public <T> SetSE<ConstraintViolationEE<T>> validateProperty(T object, StringSE propertyName, ClassSE<?>... groups)
ValidatorEE の validatePropertyEE public <T> SetSE<ConstraintViolationEE<T>> validateValue(ClassSE<T> beanType, StringSE propertyName, ObjectSE value, ClassSE<?>... groups)
ValidatorEE の validateValueEE public BeanDescriptorEE getConstraintsForClass(ClassSE<?> clazz)
ValidatorEE の getConstraintsForClassEE public <T> T unwrap(@Nullable ClassSE<T> type)
ValidatorEE の unwrapEE public ExecutableValidatorEE forExecutables()
ValidatorEE の forExecutablesEE