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) この違反の補間されたメッセージにプレースホルダーが残っているため、 MessageFormat SE を適用する必要があるかどうかを示します。 |
boolean | supports(ClassSE<?> clazz) |
<T> T | unwrap(ClassSE<T> type) |
void | validate(ObjectSE target, Errors errors) 提供された target オブジェクトを検証します。これは、Validator.supports(Class) メソッドが通常 true を返す(または返すと想定される)Class SE でなければなりません。 |
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, waitSE
public SpringValidatorAdapter(ValidatorEE targetValidator)
targetValidator
- ラップする JSR-303 バリデーター public void validate(ObjectSE target, Errors errors)
Validator
target
オブジェクトを検証します。これは、Validator.supports(Class)
メソッドが通常 true
を返す(または返すと想定される)Class
SE でなければなりません。 提供された errors
インスタンスを使用して、結果の検証エラーを報告できます。
target
- 検証されるオブジェクト errors
- 検証プロセスに関するコンテキスト状態 ValidationUtils
public void validate(ObjectSE target, Errors errors, ObjectSE... validationHints)
SmartValidator
target
オブジェクトを検証します。これは、Validator.supports(Class)
メソッドが通常 true
を返す Class
SE 型でなければなりません。 提供された 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)
SmartValidator
SmartValidator
の 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, MessageCodesResolver
protected 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)
MessageFormat
SE を適用する必要があるかどうかを示します。Spring の MessageSource のデフォルトメッセージとしてレンダリングされるときに、Bean 検証定義メッセージ(ValidationMessages.properties
から出力される)のために呼び出されます。 デフォルトの実装では、フィールド名の Spring スタイルの "{0}" プレースホルダーを MessageFormat
SE の指示と見なします。他のプレースホルダーまたはエスケープ構文の出現は、通常、不一致であり、正規表現パターン値などから生じます。標準の 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