クラス DataBinder
- 実装されたすべてのインターフェース:
PropertyEditorRegistry
,TypeConverter
- 既知の直属サブクラス
WebDataBinder
バインドプロセスは、許可されるフィールドパターン、必須フィールド、カスタムエディターなどを指定することでカスタマイズできます。
警告 : データバインディングは、外部クライアントによるアクセスや変更を目的としていないオブジェクトグラフの部分を公開することにより、セキュリティの課題を引き起こす可能性があります。データバインディングの設計と使用は、セキュリティに関して慎重に検討する必要があります。詳細については、リファレンスマニュアルの Spring Web MVC および Spring WebFlux のデータバインディングに関する専用セクションを参照してください。
バインディング結果は、BindingResult
インターフェースを介して調べることができ、Errors
インターフェースを継承します: getBindingResult()
メソッドを参照してください。不足しているフィールドとプロパティアクセス例外は、次のエラーコードを使用して、Errors インスタンスで収集された FieldErrors
に変換されます。
- フィールド不足エラー: " 必須 "
- 型不一致エラー: "typeMismatch"
- メソッド呼び出しエラー: "methodInvocation"
デフォルトでは、バインディングエラーは BindingErrorProcessor
ストラテジー、欠落フィールドおよびプロパティアクセス例外の処理を通じて解決されます。setBindingErrorProcessor(org.springframework.validation.BindingErrorProcessor)
メソッドを参照してください。必要に応じて、たとえば異なるエラーコードを生成するために、デフォルトの戦略をオーバーライドできます。
その後、カスタム検証エラーを追加できます。通常、このようなエラーコードを適切なユーザーに表示されるエラーメッセージに解決する必要があります。これは、MessageSource
を介して各エラーを解決することで実現できます。MessageSource
は、MessageSource.getMessage(org.springframework.context.MessageSourceResolvable, java.util.Locale)
メソッドにより ObjectError
/FieldError
を解決できます。メッセージコードのリストは、MessageCodesResolver
戦略を通じてカスタマイズできます。setMessageCodesResolver(org.springframework.validation.MessageCodesResolver)
メソッドを参照してください。DefaultMessageCodesResolver
の javadoc は、デフォルトの解決規則の詳細を述べています。
この汎用データバインダーは、あらゆる種類の環境で使用できます。
- 作成者:
- Rod Johnson, Juergen Hoeller, Rob Harrop, Stephane Nicoll, Kazuki Shimizu, Sam Brannen
- 関連事項:
setAllowedFields(java.lang.String...)
setRequiredFields(java.lang.String...)
registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)
setMessageCodesResolver(org.springframework.validation.MessageCodesResolver)
setBindingErrorProcessor(org.springframework.validation.BindingErrorProcessor)
construct(org.springframework.validation.DataBinder.ValueResolver)
bind(org.springframework.beans.PropertyValues)
getBindingResult()
DefaultMessageCodesResolver
DefaultBindingErrorProcessor
MessageSource
ネストされたクラスのサマリー
修飾子と型クラス説明static interface
メソッドのパラメーターにバインドする値の名前を決定する戦略。static interface
指定されたコンストラクターパラメーターにバインドする値を検索するためのconstructor binding
の戦略。フィールドサマリー
コンストラクターのサマリー
コンストラクター説明DataBinder
(ObjectSE target) デフォルトのオブジェクト名で、新しい DataBinder インスタンスを作成します。DataBinder
(ObjectSE target, StringSE objectName) 新しい DataBinder インスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明void
addCustomFormatter
(Formatter<?> formatter) カスタムフォーマッターを追加し、Formatter
-declared 型に一致するすべてのフィールドに適用します。void
addCustomFormatter
(Formatter<?> formatter, ClassSE<?>... fieldTypes) カスタムフォーマッターを追加し、指定されたフィールド型(存在する場合のみ)に適用するか、Formatter
-declared 型に一致するすべてのフィールドに適用します。void
addCustomFormatter
(Formatter<?> formatter, StringSE... fields) Formatter
クラスで指定されたフィールド型のカスタムフォーマッタを追加し、指定されたフィールドのみ(存在する場合)に適用するか、そうでなければすべてのフィールドに適用します。void
addValidators
(Validator... validators) 各バインディングステップの後に適用するバリデーターを追加します。protected void
指定されたプロパティ値をターゲットオブジェクトに適用します。void
bind
(PropertyValues pvs) 指定されたプロパティ値をこのバインダーのターゲットにバインドします。protected void
許可されたフィールドに対して特定のプロパティ値を確認し、許可されていないフィールドの値を削除します。protected void
必要なフィールドに対して指定されたプロパティ値を確認し、必要に応じて欠落フィールドエラーを生成します。MapSE<?,
?> close()
この DataBinder を閉じると、エラーが発生した場合に BindException がスローされる可能性があります。void
construct
(DataBinder.ValueResolver valueResolver) 値のコンストラクターインジェクションを使用してターゲットを作成します。<T> T
convertIfNecessary
(ObjectSE value, ClassSE<T> requiredType) 値を必要な型に変換します(必要に応じて、String から)。<T> T
convertIfNecessary
(ObjectSE value, ClassSE<T> requiredType, FieldSE field) 値を必要な型に変換します(必要に応じて、String から)。<T> T
convertIfNecessary
(ObjectSE value, ClassSE<T> requiredType, TypeDescriptor typeDescriptor) 値を必要な型に変換します(必要に応じて、String から)。<T> T
convertIfNecessary
(ObjectSE value, ClassSE<T> requiredType, MethodParameter methodParam) 値を必要な型に変換します(必要に応じて、String から)。protected AbstractPropertyBindingResult
標準の JavaBean プロパティアクセスを使用してAbstractPropertyBindingResult
インスタンスを作成します。protected AbstractPropertyBindingResult
直接フィールドアクセスを使用してAbstractPropertyBindingResult
インスタンスを作成します。protected void
doBind
(MutablePropertyValues mpvs) 渡された MutablePropertyValues インスタンスと連携する、バインディングプロセスの実際の実装。findCustomEditor
(ClassSE<?> requiredType, StringSE propertyPath) 指定された型とプロパティのカスタムプロパティエディターを見つけます。StringSE[]
バインドを許可する必要があるフィールドパターンを返します。int
配列およびコレクションの自動拡張の現在の制限を返します。バインディングエラーを処理するための戦略を返します。この DataBinder によって作成された BindingResult インスタンスを返します。関連する ConversionService があれば、それを返します。StringSE[]
バインドを許可してはならないフィールドパターンを返します。protected AbstractPropertyBindingResult
この DataBinder が保持している内部 BindingResult を AbstractPropertyBindingResult として返します。コンストラクターパラメーターのconfigured
ネームリゾルバーを返します。バインドされたオブジェクトの名前を返します。protected ConfigurablePropertyAccessor
このバインダーの BindingResult の基になる PropertyAccessor を返します。protected PropertyEditorRegistry
このバインダーの BindingResult の基になる TypeConverter を返します。StringSE[]
各バインディングプロセスに必要なフィールドを返します。protected SimpleTypeConverter
このバインダーの基になる SimpleTypeConverter を返します。ラップされたターゲットオブジェクトを返します。ターゲットオブジェクトのconfigured
型を返します。protected TypeConverter
このバインダーの BindingResult の基になる TypeConverter を返します。各バインディングステップの後に適用するプライマリバリデータを返します(ある場合)。データバインディング後に適用するバリデーターを返します。データバインディング後に適用するバリデーターを返します。void
この DataBinder の標準 JavaBean プロパティアクセスを初期化します。void
デフォルトの Bean プロパティアクセスの代替として、この DataBinder の直接フィールドアクセスを初期化します。protected boolean
指定されたフィールドがバインドを許可されているかどうかを判別します。boolean
ネストされたパスの「自動拡張」がアクティブになっているかどうかを返します。boolean
バインド対象のフィールドのみをバインドするかどうかを返します。boolean
バインド時に無効なフィールドを無視するかどうかを返します。boolean
バインド時に不明なフィールドを無視するかどうかを返します。void
registerCustomEditor
(ClassSE<?> requiredType, PropertyEditorSE propertyEditor) 指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。void
registerCustomEditor
(ClassSE<?> requiredType, StringSE field, PropertyEditorSE propertyEditor) 指定された型とプロパティ、または指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。void
replaceValidators
(Validator... validators) 各バインディングステップの後に適用するバリデーターを置き換えます。void
setAllowedFields
(StringSE... allowedFields) バインドを許可する必要があるフィールドパターンを登録します。void
setAutoGrowCollectionLimit
(int autoGrowCollectionLimit) 配列およびコレクションの自動拡張の制限を指定します。void
setAutoGrowNestedPaths
(boolean autoGrowNestedPaths) このバインダーが null 値を含むネストされたパスを「自動拡張」しようとするかどうかを設定します。void
setBindingErrorProcessor
(BindingErrorProcessor bindingErrorProcessor) バインディングエラーの処理に使用する戦略、つまり、必須フィールドエラーとPropertyAccessException
を設定します。void
setConversionService
(ConversionService conversionService) JavaBeans PropertyEditors の代わりに、プロパティ値の変換に使用するConversionService
を指定します。void
setDeclarativeBinding
(boolean declarativeBinding) construct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインディングなど、明示的にバインディングを目的としたフィールドのみをバインドするかどうかを設定します。void
setDisallowedFields
(StringSE... disallowedFields) バインドを許可しないフィールドパターンを登録します。void
setExcludedValidators
(PredicateSE<Validator> predicate) バリデータを除外する述語を構成します。void
setIgnoreInvalidFields
(boolean ignoreInvalidFields) 無効なフィールドを無視するかどうか、つまり、アクセスできないターゲットオブジェクトに対応するフィールドを持つバインドパラメーターを無視するかどうかを設定します(たとえば、ネストされたパスの null 値のため)。void
setIgnoreUnknownFields
(boolean ignoreUnknownFields) 不明なフィールドを無視するかどうか、つまり、ターゲットオブジェクトに対応するフィールドがないバインドパラメーターを無視するかどうかを設定します。void
setMessageCodesResolver
(MessageCodesResolver messageCodesResolver) エラーをメッセージコードに解決するために使用する戦略を設定します。void
setNameResolver
(DataBinder.NameResolver nameResolver) construct(org.springframework.validation.DataBinder.ValueResolver)
のコンストラクターパラメーターにバインドする値の名前を決定するようにリゾルバーを構成します。void
setRequiredFields
(StringSE... requiredFields) 各バインディングプロセスに必要なフィールドを登録します。void
setTargetType
(ResolvableType targetType) 対象オブジェクトの型を設定します。void
setValidator
(Validator validator) 各バインディングステップの後に適用するように Validator を設定します。protected boolean
指定された型のコンストラクター引数をインスタンス化して、独自のコンストラクター引数をバインド値に照合するかどうか。protected boolean
パラメーターをプロパティにバインドしないかどうか。void
validate()
指定されたバリデータがある場合は呼び出します。void
指定された検証ヒントがあれば、指定された検証ヒントを呼び出します。
フィールドの詳細
コンストラクターの詳細
DataBinder
デフォルトのオブジェクト名で、新しい DataBinder インスタンスを作成します。- パラメーター:
target
- バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合はnull
)- 関連事項:
DataBinder
新しい DataBinder インスタンスを作成します。- パラメーター:
target
- バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合はnull
)objectName
- ターゲットオブジェクトの名前
メソッドの詳細
getTarget
ラップされたターゲットオブジェクトを返します。ターゲットオブジェクトが
null
で、getTargetType()
が設定されている場合、construct(ValueResolver)
を呼び出してターゲットを作成できます。getObjectName
バインドされたオブジェクトの名前を返します。setTargetType
ターゲットオブジェクトの型を設定します。ターゲットがnull
の場合、targetType を設定すると、construct(org.springframework.validation.DataBinder.ValueResolver)
を使用してターゲットを作成できます。- パラメーター:
targetType
- 対象オブジェクトの型- 導入:
- 6.1
- 関連事項:
getTargetType
ターゲットオブジェクトのconfigured
型を返します。- 導入:
- 6.1
setAutoGrowNestedPaths
public void setAutoGrowNestedPaths(boolean autoGrowNestedPaths) このバインダーが null 値を含むネストされたパスを「自動拡張」しようとするかどうかを設定します。"true" の場合、null パスの場所にはデフォルトのオブジェクト値が入力され、例外が発生する代わりにトラバースされます。このフラグは、範囲外のインデックスにアクセスするときにコレクション要素の自動成長も有効にします。
標準の DataBinder では、デフォルトは "true" です。Spring 4.1 以降、この機能は Bean プロパティアクセス(DataBinder のデフォルトモード)およびフィールドアクセスでサポートされています。
bind(PropertyValues)
を介した setter/ フィールドインジェクションに使用され、construct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインディングには適用されません。isAutoGrowNestedPaths
public boolean isAutoGrowNestedPaths()ネストされたパスの「自動拡張」がアクティブになっているかどうかを返します。setAutoGrowCollectionLimit
public void setAutoGrowCollectionLimit(int autoGrowCollectionLimit) 配列およびコレクションの自動拡張の制限を指定します。デフォルトは 256 で、大きなインデックスの場合に OutOfMemoryErrors を防ぎます。自動成長のニーズが異常に高い場合は、この制限を上げます。
bind(PropertyValues)
を介した setter/ フィールドインジェクションに使用され、construct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインディングには適用されません。getAutoGrowCollectionLimit
public int getAutoGrowCollectionLimit()配列およびコレクションの自動拡張の現在の制限を返します。initBeanPropertyAccess
public void initBeanPropertyAccess()この DataBinder の標準 JavaBean プロパティアクセスを初期化します。これがデフォルトです。明示的な呼び出しは、先行初期化につながります。
createBeanPropertyBindingResult
標準の JavaBean プロパティアクセスを使用してAbstractPropertyBindingResult
インスタンスを作成します。- 導入:
- 4.2.1
initDirectFieldAccess
public void initDirectFieldAccess()デフォルトの Bean プロパティアクセスの代替として、この DataBinder の直接フィールドアクセスを初期化します。createDirectFieldBindingResult
直接フィールドアクセスを使用してAbstractPropertyBindingResult
インスタンスを作成します。- 導入:
- 4.2.1
getInternalBindingResult
この DataBinder が保持している内部 BindingResult を AbstractPropertyBindingResult として返します。getPropertyAccessor
このバインダーの BindingResult の基になる PropertyAccessor を返します。getSimpleTypeConverter
このバインダーの基になる SimpleTypeConverter を返します。getPropertyEditorRegistry
このバインダーの BindingResult の基になる TypeConverter を返します。getTypeConverter
このバインダーの BindingResult の基になる TypeConverter を返します。getBindingResult
この DataBinder によって作成された BindingResult インスタンスを返します。これにより、バインド操作後のバインド結果への便利なアクセスが可能になります。- 戻り値:
- BindingResult またはエラーインスタンスとして処理される BindingResult インスタンス (エラーは BindingResult のスーパーインターフェースです)
- 関連事項:
setDeclarativeBinding
public void setDeclarativeBinding(boolean declarativeBinding) 以下を含む、明示的にバインドすることを目的としたフィールドのみをバインドするかどうかを設定します。construct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターのバインディング。- 構成された
allowedFields
とのプロパティバインディング。
デフォルトは "false" です。これをオンにすると、コンストラクターパラメーターと許可されたフィールドへのバインドが制限されます。
- 導入:
- 6.1
isDeclarativeBinding
public boolean isDeclarativeBinding()バインド対象のフィールドのみをバインドするかどうかを返します。- 導入:
- 6.1
setIgnoreUnknownFields
public void setIgnoreUnknownFields(boolean ignoreUnknownFields) 不明なフィールドを無視するかどうか、つまり、ターゲットオブジェクトに対応するフィールドがないバインドパラメーターを無視するかどうかを設定します。デフォルトは "true" です。これをオフにすると、すべてのバインドパラメーターに、ターゲットオブジェクトに一致するフィールドが必要になります。
この設定は、この DataBinder のバインディング操作にのみ適用され、
BindingResult
を介した値の取得には適用されないことに注意してください。bind(PropertyValues)
を使用したフィールドへのバインドに使用され、必要な値のみを使用するconstruct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインドには適用されません。isIgnoreUnknownFields
public boolean isIgnoreUnknownFields()バインド時に不明なフィールドを無視するかどうかを返します。setIgnoreInvalidFields
public void setIgnoreInvalidFields(boolean ignoreInvalidFields) 無効なフィールドを無視するかどうか、つまり、アクセスできないターゲットオブジェクトに対応するフィールドを持つバインドパラメーターを無視するかどうかを設定します(たとえば、ネストされたパスの null 値のため)。デフォルトは "false" です。これをオンにすると、ターゲットオブジェクトグラフの存在しない部分にネストされたオブジェクトのバインドパラメーターが無視されます。
この設定は、この DataBinder のバインディング操作にのみ適用され、
BindingResult
を介した値の取得には適用されないことに注意してください。bind(PropertyValues)
を使用したフィールドへのバインドに使用され、必要な値のみを使用するconstruct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインドには適用されません。isIgnoreInvalidFields
public boolean isIgnoreInvalidFields()バインド時に無効なフィールドを無視するかどうかを返します。setAllowedFields
バインドを許可する必要があるフィールドパターンを登録します。デフォルトはすべてのフィールドです。
これを制限して、たとえば、HTTP リクエストパラメーターをバインドするときに悪意のあるユーザーによる不要な変更を回避します。
"xxx*"
、"*xxx"
、"*xxx*"
、"xxx*yyy"
の一致(任意の数のパターンパーツを使用)、および直接の同等性をサポートします。このメソッドのデフォルトの実装では、許可されたフィールドパターンが標準形式で保存されます。このメソッドをオーバーライドするサブクラスは、これを考慮に入れる必要があります。
isAllowed(java.lang.String)
メソッドをオーバーライドすることにより、より高度なマッチングを実装できます。または、 許可されていないフィールドパターンのリストを指定します。
bind(PropertyValues)
を使用したフィールドへのバインドに使用され、必要な値のみを使用するconstruct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインドには適用されません。- パラメーター:
allowedFields
- 許可されたフィールドパターンの配列- 関連事項:
getAllowedFields
バインドを許可する必要があるフィールドパターンを返します。- 戻り値:
- 許可されたフィールドパターンの配列
- 関連事項:
setDisallowedFields
バインドを許可しないフィールドパターンを登録します。デフォルトはなしです。
たとえば、HTTP リクエストパラメーターをバインドするときに悪意のあるユーザーによる不要な変更を回避するために、フィールドを不許可としてマークします。
"xxx*"
、"*xxx"
、"*xxx*"
、"xxx*yyy"
の一致(任意の数のパターンパーツを使用)、および直接の同等性をサポートします。このメソッドのデフォルトの実装では、許可されていないフィールドパターンが標準形式で保存されます。Spring Framework 5.2.21 の時点で、デフォルトの実装では、許可されていないフィールドパターンも小文字に変換され、
isAllowed(java.lang.String)
で大文字と小文字を区別しないパターンマッチングがサポートされます。このメソッドをオーバーライドするサブクラスは、これらの変換の両方を考慮に入れる必要があります。isAllowed(java.lang.String)
メソッドをオーバーライドすることにより、より高度なマッチングを実装できます。または、 許可されるフィールドパターンのリストを指定します。
bind(PropertyValues)
を使用したフィールドへのバインドに使用され、必要な値のみを使用するconstruct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインドには適用されません。- パラメーター:
disallowedFields
- 許可されていないフィールドパターンの配列- 関連事項:
getDisallowedFields
バインドを許可してはならないフィールドパターンを返します。- 戻り値:
- 許可されていないフィールドパターンの配列
- 関連事項:
setRequiredFields
各バインディングプロセスに必要なフィールドを登録します。指定されたフィールドのいずれかが受信プロパティ値のリストに含まれていない場合、対応する「フィールドがありません」エラーが作成され、エラーコード「必須」がデフォルトのバインドエラープロセッサーによって作成されます。
bind(PropertyValues)
を使用したフィールドへのバインドに使用され、必要な値のみを使用するconstruct(org.springframework.validation.DataBinder.ValueResolver)
を介したコンストラクターバインドには適用されません。- パラメーター:
requiredFields
- フィールド名の配列- 関連事項:
getRequiredFields
各バインディングプロセスに必要なフィールドを返します。- 戻り値:
- フィールド名の配列
setNameResolver
construct(org.springframework.validation.DataBinder.ValueResolver)
のコンストラクターパラメーターにバインドする値の名前を決定するようにリゾルバーを構成します。構成されていない場合、または名前を解決できない場合は、デフォルトで
DefaultParameterNameDiscoverer
が使用されます。- パラメーター:
nameResolver
- 使用するリゾルバー- 導入:
- 6.1
getNameResolver
コンストラクターパラメーターのconfigured
ネームリゾルバーを返します。- 導入:
- 6.1
setMessageCodesResolver
エラーをメッセージコードに解決するために使用する戦略を設定します。指定された戦略を基礎となるエラー保持者に適用します。デフォルトは DefaultMessageCodesResolver です。
setBindingErrorProcessor
バインディングエラーの処理に使用する戦略、つまり、必須フィールドエラーとPropertyAccessException
を設定します。デフォルトは DefaultBindingErrorProcessor です。
getBindingErrorProcessor
バインディングエラーを処理するための戦略を返します。setValidator
各バインディングステップの後に適用するように Validator を設定します。setExcludedValidators
バリデータを除外する述語を構成します。- 導入:
- 6.1
addValidators
各バインディングステップの後に適用するバリデーターを追加します。replaceValidators
各バインディングステップの後に適用するバリデーターを置き換えます。getValidator
各バインディングステップの後に適用するプライマリバリデータを返します(ある場合)。getValidators
データバインディング後に適用するバリデーターを返します。getValidatorsToApply
データバインディング後に適用するバリデータを返します。これには、exclude predicate
によってフィルタリングされた構成済みのvalidators
が含まれます。- 導入:
- 6.1
setConversionService
JavaBeans PropertyEditors の代わりに、プロパティ値の変換に使用するConversionService
を指定します。getConversionService
関連する ConversionService があれば、それを返します。addCustomFormatter
カスタムフォーマッターを追加し、Formatter
-declared 型に一致するすべてのフィールドに適用します。対応する
PropertyEditor
SE アダプターをカバーに登録します。- パラメーター:
formatter
- 追加するフォーマッタ、特定の型に対して一般的に宣言された- 導入:
- 4.2
- 関連事項:
addCustomFormatter
Formatter
クラスで指定されたフィールド型のカスタムフォーマッタを追加し、指定されたフィールドのみ(存在する場合)に適用するか、そうでなければすべてのフィールドに適用します。対応する
PropertyEditor
SE アダプターをカバーに登録します。- パラメーター:
formatter
- 追加するフォーマッタ、特定の型に対して一般的に宣言されたfields
- フォーマッタを適用するフィールド、またはすべてに適用する場合はなし- 導入:
- 4.2
- 関連事項:
addCustomFormatter
カスタムフォーマッターを追加し、指定されたフィールド型(存在する場合のみ)に適用するか、Formatter
-declared 型に一致するすべてのフィールドに適用します。対応する
PropertyEditor
SE アダプターをカバーに登録します。- パラメーター:
formatter
- 追加するフォーマッタ (フィールド型がパラメーターとして明示的に指定されている場合、フィールド型を総称的に宣言する必要はありません。)fieldTypes
- フォーマッタを適用するフィールド型、または指定されたFormatter
実装クラスから派生する場合はなし- 導入:
- 4.2
- 関連事項:
registerCustomEditor
インターフェースからコピーされた説明:PropertyEditorRegistry
指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。- 次で指定:
- インターフェース
PropertyEditorRegistry
のregisterCustomEditor
- パラメーター:
requiredType
- プロパティの型propertyEditor
- 登録するエディター
registerCustomEditor
public void registerCustomEditor(@Nullable ClassSE<?> requiredType, @Nullable StringSE field, PropertyEditorSE propertyEditor) インターフェースからコピーされた説明:PropertyEditorRegistry
指定された型とプロパティ、または指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。プロパティパスが配列またはコレクションプロパティを示す場合、エディターは配列 / コレクション自体(
PropertyEditor
SE が配列またはコレクション値を作成する必要がある)または各要素(PropertyEditor
が要素型を作成する必要がある)のいずれかに適用されます。指定された必須型に応じて。メモ: プロパティパスごとに 1 つの登録済みカスタムエディターのみがサポートされます。コレクション / 配列の場合、コレクション / 配列と同じプロパティの各要素の両方にエディターを登録しないでください。
たとえば、"items[n].quantity" (すべての値 n)のエディターを登録する場合は、このメソッドの "propertyPath" 引数の値として "items.quantity" を使用します。
- 次で指定:
- インターフェース
PropertyEditorRegistry
のregisterCustomEditor
- パラメーター:
requiredType
- プロパティの型。これは、プロパティが指定されている場合でもnull
である可能性がありますが、特にコレクションの場合は特に指定する必要があります。エディター全体がコレクション自体に適用されるか、各エントリに適用されるかを明確にします。一般的なルールとして、Collection/array の場合は、ここでnull
を指定しないでください!field
- プロパティのパス(名前またはネストされたパス)、または指定された型のすべてのプロパティのエディターを登録する場合はnull
propertyEditor
- 登録するエディター
findCustomEditor
@Nullable public PropertyEditorSE findCustomEditor(@Nullable ClassSE<?> requiredType, @Nullable StringSE propertyPath) インターフェースからコピーされた説明:PropertyEditorRegistry
指定された型とプロパティのカスタムプロパティエディターを見つけます。- 次で指定:
- インターフェース
PropertyEditorRegistry
のfindCustomEditor
- パラメーター:
requiredType
- プロパティの型 (プロパティが指定されている場合はnull
にすることができますが、一貫性チェックのためにいずれにしても指定する必要があります)propertyPath
- プロパティのパス(名前またはネストされたパス)、または特定の型のすべてのプロパティのエディターを探している場合はnull
- 戻り値:
- 登録されているエディター、または存在しない場合は
null
convertIfNecessary
@Nullable public <T> T convertIfNecessary(@Nullable ObjectSE value, @Nullable ClassSE<T> requiredType) throws TypeMismatchException インターフェースからコピーされた説明:TypeConverter
値を必要な型に変換します(必要に応じて、String から)。String から任意の型への変換では、通常、PropertyEditor クラスの
setAsText
メソッド、または ConversionService の Spring コンバーターを使用します。- 次で指定:
- インターフェース
TypeConverter
のconvertIfNecessary
- パラメーター:
value
- 変換する値requiredType
- 変換する必要がある型 (またはnull
(不明な場合、たとえばコレクション要素の場合))- 戻り値:
- 新しい値、場合によっては型変換の結果
- 例外:
TypeMismatchException
- 型変換が失敗した場合- 関連事項:
convertIfNecessary
@Nullable public <T> T convertIfNecessary(@Nullable ObjectSE value, @Nullable ClassSE<T> requiredType, @Nullable MethodParameter methodParam) throws TypeMismatchException インターフェースからコピーされた説明:TypeConverter
値を必要な型に変換します(必要に応じて、String から)。String から任意の型への変換では、通常、PropertyEditor クラスの
setAsText
メソッド、または ConversionService の Spring コンバーターを使用します。- 次で指定:
- インターフェース
TypeConverter
のconvertIfNecessary
- パラメーター:
value
- 変換する値requiredType
- 変換する必要がある型 (またはnull
(不明な場合、たとえばコレクション要素の場合))methodParam
- 変換のターゲットであるメソッドパラメーター (ジェネリクス型の分析用。null
の場合があります)- 戻り値:
- 新しい値、場合によっては型変換の結果
- 例外:
TypeMismatchException
- 型変換が失敗した場合- 関連事項:
convertIfNecessary
@Nullable public <T> T convertIfNecessary(@Nullable ObjectSE value, @Nullable ClassSE<T> requiredType, @Nullable FieldSE field) throws TypeMismatchException インターフェースからコピーされた説明:TypeConverter
値を必要な型に変換します(必要に応じて、String から)。String から任意の型への変換では、通常、PropertyEditor クラスの
setAsText
メソッド、または ConversionService の Spring コンバーターを使用します。- 次で指定:
- インターフェース
TypeConverter
のconvertIfNecessary
- パラメーター:
value
- 変換する値requiredType
- 変換する必要がある型 (またはnull
(不明な場合、たとえばコレクション要素の場合))field
- 変換のターゲットである反射フィールド (ジェネリクス型の分析用。null
の場合があります)- 戻り値:
- 新しい値、場合によっては型変換の結果
- 例外:
TypeMismatchException
- 型変換が失敗した場合- 関連事項:
convertIfNecessary
@Nullable public <T> T convertIfNecessary(@Nullable ObjectSE value, @Nullable ClassSE<T> requiredType, @Nullable TypeDescriptor typeDescriptor) throws TypeMismatchException インターフェースからコピーされた説明:TypeConverter
値を必要な型に変換します(必要に応じて、String から)。String から任意の型への変換では、通常、PropertyEditor クラスの
setAsText
メソッド、または ConversionService の Spring コンバーターを使用します。- 次で指定:
- インターフェース
TypeConverter
のconvertIfNecessary
- パラメーター:
value
- 変換する値requiredType
- 変換する必要がある型 (またはnull
(不明な場合、たとえばコレクション要素の場合))typeDescriptor
- 使用する型記述子(null
の場合があります)- 戻り値:
- 新しい値、場合によっては型変換の結果
- 例外:
TypeMismatchException
- 型変換が失敗した場合- 関連事項:
construct
値のコンストラクターインジェクションを使用してターゲットを作成します。setTargetType(ResolvableType)
は以前に呼び出されており、getTarget()
はnull
であることが予想されます。ターゲットオブジェクト型で利用可能な場合は引数なしのパブリックコンストラクターを使用し、次のようなデータクラスの「プライマリコンストラクター」アプローチもサポートします。JavaBeans
ConstructorProperties
アノテーションとバイトコード内のランタイム保持パラメーター名を理解し、入力を関連付けます。名前によるコンストラクター引数を持つ値。そのようなコンストラクターが見つからない場合は、setter メソッドによる後続の Bean プロパティバインディングを想定して、デフォルトのコンストラクターが (パブリックでなくても) 使用されます。呼び出し後、
getBindingResult()
を使用してバインドの失敗を確認したり、コンストラクター引数を検証したりします。エラーがない場合、ターゲットが設定され、doBind(MutablePropertyValues)
を setter 経由のさらなる初期化に使用できます。- パラメーター:
valueResolver
- コンストラクターの引数の値を解決するには- 例外:
BeanInstantiationException
- コンストラクターが失敗した場合- 導入:
- 6.1
shouldConstructArgument
指定された型のコンストラクター引数をインスタンス化して、独自のコンストラクター引数をバインド値に照合するかどうか。デフォルトでは、単純な値型、マップ、コレクション、配列は、ネストされたコンストラクターバインディングの初期化から除外されます。
- 導入:
- 6.1.2
bind
指定されたプロパティ値をこのバインダーのターゲットにバインドします。この呼び出しにより、必須フィールド (コード「必須」) などの基本的なバインディングエラーや、値と Bean プロパティ (コード "typeMismatch" ) の型の不一致を表すフィールドエラーが発生する可能性があります。
指定された PropertyValues は使い捨てインスタンスである必要があることに注意してください。効率を上げるため、MutablePropertyValues インターフェースを実装する場合、許可されたフィールドのみを含むように変更されます。それ以外の場合、この目的のために内部可変コピーが作成されます。いずれの場合も元のインスタンスを変更しないでおくには、PropertyValues のコピーを渡します。
- パラメーター:
pvs
- バインドするプロパティ値- 関連事項:
shouldNotBindPropertyValues
protected boolean shouldNotBindPropertyValues()パラメーターをプロパティにバインドしないかどうか。isDeclarativeBinding()
がオンで、allowedFields
が構成されていない場合は、"true" を返します。- 導入:
- 6.1
doBind
渡された MutablePropertyValues インスタンスと連携する、バインディングプロセスの実際の実装。- パラメーター:
mpvs
- MutablePropertyValues インスタンスとしてバインドするプロパティ値- 関連事項:
checkAllowedFields
許可されたフィールドに対して特定のプロパティ値を確認し、許可されていないフィールドの値を削除します。- パラメーター:
mpvs
- バインドされるプロパティ値 (変更可能)- 関連事項:
isAllowed
指定されたフィールドがバインドを許可されているかどうかを判別します。渡されたプロパティ値ごとに呼び出されます。
許可されたフィールドパターンと許可されていないフィールドパターンの構成済みリストで、
"xxx*"
、"*xxx"
、"*xxx*"
、"xxx*yyy"
の一致(任意の数のパターンパーツを使用)および直接の同等性をチェックします。許可されたフィールドパターンとの照合では、大文字と小文字が区別されます。一方、許可されていないフィールドパターンとの照合では、大文字と小文字は区別されません。
許可されていないパターンに一致するフィールドは、許可されたリストのパターンにも一致する場合でも受け入れられません。
サブクラスでオーバーライドできますが、前述の契約を尊重するように注意する必要があります。
- パラメーター:
field
- チェックするフィールド- 戻り値:
- フィールドが許可されている場合は
true
- 関連事項:
checkRequiredFields
必要なフィールドに対して指定されたプロパティ値を確認し、必要に応じて欠落フィールドエラーを生成します。- パラメーター:
mpvs
- バインドされるプロパティ値 (変更可能)- 関連事項:
applyPropertyValues
指定されたプロパティ値をターゲットオブジェクトに適用します。デフォルトの実装では、提供されたすべてのプロパティ値が Bean プロパティ値として適用されます。デフォルトでは、不明なフィールドは無視されます。
validate
public void validate()指定されたバリデータがある場合は呼び出します。validate
指定された検証ヒントがあれば、指定された検証ヒントを呼び出します。メモ: 検証ヒントは、実際のターゲット Validator によって無視される場合があります。
- パラメーター:
validationHints
-SmartValidator
に渡される 1 つ以上のヒントオブジェクト- 導入:
- 3.1
- 関連事項:
close
この DataBinder を閉じると、エラーが発生した場合に BindException がスローされる可能性があります。- 戻り値:
- ターゲットオブジェクトとエラーインスタンスを含むモデルマップ
- 例外:
BindException
- バインド操作にエラーがあった場合- 関連事項: