クラス WebDataBinder
- 実装されているすべてのインターフェース:
- PropertyEditorRegistry,- TypeConverter
DataBinder。Web 環境用に設計されていますが、サーブレット API に依存していません。ServletRequestDataBinder など、より具体的な DataBinder バリアントの基本クラスとして機能します。警告 : データバインディングは、外部クライアントによるアクセスや変更を目的としていないオブジェクトグラフの部分を公開することにより、セキュリティの課題を引き起こす可能性があります。データバインディングの設計と使用は、セキュリティに関して慎重に検討する必要があります。詳細については、リファレンスマニュアルの Spring Web MVC および Spring WebFlux のデータバインディングに関する専用セクションを参照してください。
HTML チェックボックスと選択オプションの一般的な問題に対処するフィールドマーカーのサポートが含まれています。フィールドがフォームの一部であるが、空であるためにリクエストパラメーターを生成しなかったことを検出します。フィールドマーカーを使用すると、その状態を検出し、それに応じて対応する Bean プロパティをリセットできます。他の方法では存在しないパラメーターのデフォルト値は、空以外のフィールドの値を指定できます。
- 導入:
- 1.2
- 作成者:
- Juergen Hoeller, Scott Andrews, Brian Clozel
- 関連事項:
- ネストされたクラスの要約- クラス org.springframework.validation.DataBinder から継承されたネストクラス / インターフェース- DataBinder.NameResolver, DataBinder.ValueResolver
- フィールドのサマリーフィールド修飾子と型フィールド説明- static final StringSEフィールドのデフォルトパラメーターが始まるデフォルトの接頭辞の後にフィールド名が続きます。- static final StringSEフィールドマーカーパラメーターが始まるデフォルトの接頭辞、その後にフィールド名が続きます。- クラス org.springframework.validation.DataBinder から継承されたフィールド- DEFAULT_AUTO_GROW_COLLECTION_LIMIT, DEFAULT_OBJECT_NAME, logger
- コンストラクターの概要コンストラクターコンストラクター説明- WebDataBinder- (ObjectSE target) デフォルトのオブジェクト名で、新しい WebDataBinder インスタンスを作成します。- WebDataBinder- (ObjectSE target, StringSE objectName) 新しい WebDataBinder インスタンスを作成します。
- メソッドのサマリー修飾子と型メソッド説明- protected void- "[]"で終わる名前のプロパティ値を確認してください。- protected void- bindMultipart- (MapSE<StringSE, - ListSE<MultipartFile>> multipartFiles, MutablePropertyValues mpvs) 指定されたリクエストに含まれるすべてのマルチパートファイルがあれば、バインドします(マルチパートリクエストの場合)。- protected voidフィールドのデフォルトの指定されたプロパティ値を確認します。- protected voidフィールドマーカーの指定されたプロパティ値を確認します。- protected void- doBind- (MutablePropertyValues mpvs) この実装は、スーパークラスバインディングプロセスに委譲する前に、フィールドのデフォルトとマーカーチェックを実行します。- getEmptyValue- (ClassSE<?> fieldType) 指定されたフィールドの空の値を判別します。- protected ObjectSE- getEmptyValue- (StringSE field, ClassSE<?> fieldType) 指定されたフィールドの空の値を判別します。デフォルトのフィールドをマークするパラメーターのプレフィックスを返します。空の可能性があるフィールドをマークするパラメーターのプレフィックスを返します。- boolean空の MultipartFile パラメーターをバインドするかどうかを返します。- protected ObjectSE- resolvePrefixValue- (StringSE name, ClassSE<?> type, BiFunctionSE<StringSE, - ClassSE<?>, - ObjectSE> resolver) - getFieldDefaultPrefix()または- getFieldMarkerPrefix()が先頭に付加されている場合に値を解決できるかどうかを確認します。- void- setBindEmptyMultipartFiles- (boolean bindEmptyMultipartFiles) 空の MultipartFile パラメーターをバインドするかどうかを設定します。- void- setFieldDefaultPrefix- (StringSE fieldDefaultPrefix) 名前として「接頭辞 + フィールド」を持つ、デフォルト値フィールドを示すパラメーターに使用できる接頭辞を指定します。- void- setFieldMarkerPrefix- (StringSE fieldMarkerPrefix) 空の可能性のあるフィールドをマークするパラメーターに使用できるプレフィックスを指定します。名前には「プレフィックス + フィールド」が含まれます。- クラス org.springframework.validation.DataBinder から継承されたメソッド- addCustomFormatter, addCustomFormatter, addCustomFormatter, addValidators, applyPropertyValues, bind, checkAllowedFields, checkRequiredFields, close, construct, convertIfNecessary, convertIfNecessary, convertIfNecessary, convertIfNecessary, createBeanPropertyBindingResult, createDirectFieldBindingResult, findCustomEditor, getAllowedFields, getAutoGrowCollectionLimit, getBindingErrorProcessor, getBindingResult, getConversionService, getDisallowedFields, getInternalBindingResult, getNameResolver, getObjectName, getPropertyAccessor, getPropertyEditorRegistry, getRequiredFields, getSimpleTypeConverter, getTarget, getTargetType, getTypeConverter, getValidator, getValidators, getValidatorsToApply, initBeanPropertyAccess, initDirectFieldAccess, isAllowed, isAutoGrowNestedPaths, isDeclarativeBinding, isIgnoreInvalidFields, isIgnoreUnknownFields, registerCustomEditor, registerCustomEditor, replaceValidators, setAllowedFields, setAutoGrowCollectionLimit, setAutoGrowNestedPaths, setBindingErrorProcessor, setConversionService, setDeclarativeBinding, setDisallowedFields, setExcludedValidators, setIgnoreInvalidFields, setIgnoreUnknownFields, setMessageCodesResolver, setNameResolver, setRequiredFields, setTargetType, setValidator, shouldConstructArgument, shouldNotBindPropertyValues, validate, validate
- フィールドの詳細- DEFAULT_FIELD_MARKER_PREFIXフィールドマーカーパラメーターが始まるデフォルトの接頭辞、その後にフィールド名が続きます。"_subscribeToNewsletter" フィールドの "subscribeToNewsletter"。- このようなマーカーパラメーターは、フィールドが表示されていたこと、つまり、送信を引き起こしたフォームに存在していたことを示しています。対応するフィールド値パラメーターが見つからなかった場合、フィールドはリセットされます。この場合、フィールドマーカーパラメーターの値は重要ではありません。任意の値を使用できます。これは、HTML チェックボックスと選択オプションに特に役立ちます。 
- DEFAULT_FIELD_DEFAULT_PREFIXフィールドのデフォルトパラメーターが始まるデフォルトの接頭辞の後にフィールド名が続きます。"!subscribeToNewsletter" フィールドの "!subscribeToNewsletter"。- デフォルトパラメーターは、空の値ではなくデフォルト値を提供するという点でフィールドマーカーとは異なります。 
 
- コンストラクターの詳細- WebDataBinderデフォルトのオブジェクト名で、新しい WebDataBinder インスタンスを作成します。- パラメーター:
- target- バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合は- null)
- 関連事項:
 
- WebDataBinder新しい WebDataBinder インスタンスを作成します。- パラメーター:
- target- バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合は- null)
- objectName- ターゲットオブジェクトの名前
 
 
- メソッドの詳細- setFieldMarkerPrefix空の可能性のあるフィールドをマークするパラメーターに使用できる接頭辞を指定します。名前には「接頭辞 + フィールド」を使用します。このようなマーカーパラメーターは存在によってチェックされます。たとえば、「可視」など、任意の値を送信できます。これは、HTML チェックボックスと選択オプションに特に役立ちます。- "_FIELD" パラメーターのデフォルトは "_" です( "_subscribeToNewsletter" など)。空のフィールドチェックを完全にオフにする場合は、これを null に設定します。 - HTML チェックボックスは、チェックされたときにのみ値を送信するため、以前にチェックされたボックスがチェックされていないことを検出することはできません。少なくとも、標準の HTML の方法ではできません。 - これに対処する 1 つの方法は、フォームにチェックボックスが表示されていることがわかっている場合はチェックボックスパラメーター値を探し、値が見つからない場合はチェックボックスをリセットすることです。Spring Web MVC では、これは通常、カスタム - onBind実装で発生します。- この自動リセットメカニズムは、マーカーパラメーターが "subscribeToNewsletter" フィールドの "_subscribeToNewsletter" のように各チェックボックスフィールドに送信されるという条件で、この欠陥に対処します。いずれの場合でもマーカーパラメーターが送信されるため、データバインダーは空のフィールドを検出して、その値を自動的にリセットできます。 
- getFieldMarkerPrefix空の可能性があるフィールドをマークするパラメーターのプレフィックスを返します。
- setFieldDefaultPrefix名前として「接頭辞 + フィールド」を持つ、デフォルト値フィールドを示すパラメーターに使用できる接頭辞を指定します。デフォルトのフィールドの値は、フィールドが指定されていない場合に使用されます。- "!FIELD" パラメーターのデフォルトは "!" です(例: "!subscribeToNewsletter" )。フィールドのデフォルトを完全にオフにする場合は、これを null に設定します。 - HTML チェックボックスは、チェックされたときにのみ値を送信するため、以前にチェックされたボックスがチェックされていないことを検出することはできません。少なくとも、標準の HTML の方法ではできません。デフォルトのフィールドは、チェックボックスが非ブール値を表す場合に特に役立ちます。 - デフォルトパラメーターが存在すると、指定されたフィールドのフィールドマーカーの動作が横取りされます。 
- getFieldDefaultPrefixデフォルトのフィールドをマークするパラメーターのプレフィックスを返します。
- setBindEmptyMultipartFilespublic void setBindEmptyMultipartFiles- (boolean bindEmptyMultipartFiles) 空の MultipartFile パラメーターをバインドするかどうかを設定します。デフォルトは "true" です。- ユーザーが別のファイルを選択せずにフォームを再送信するときに、すでにバインドされている MultipartFile を保持する場合は、これをオフにします。そうでない場合、すでにバインドされている MultipartFile は空の MultipartFile ホルダーに置き換えられます。 - 関連事項:
 
- isBindEmptyMultipartFilespublic boolean isBindEmptyMultipartFiles()空の MultipartFile パラメーターをバインドするかどうかを返します。
- resolvePrefixValue@Nullable protected ObjectSE resolvePrefixValue- (StringSE name, ClassSE<?> type, BiFunctionSE<StringSE, - ClassSE<?>, - ObjectSE> resolver) - getFieldDefaultPrefix()または- getFieldMarkerPrefix()が先頭に付加されている場合に値を解決できるかどうかを確認します。- パラメーター:
- name- 解決する値の名前
- type- 期待される値の型
- resolver- チェックに使用するデリゲートリゾルバー
- 戻り値:
-  解決された値、または null
- 導入:
- 6.1
 
- doBindこの実装は、スーパークラスバインディングプロセスに委譲する前に、フィールドのデフォルトとマーカーチェックを実行します。- オーバーライド:
-  クラス DataBinderのdoBind
- パラメーター:
- mpvs- MutablePropertyValues インスタンスとしてバインドするプロパティ値
- 関連事項:
 
- checkFieldDefaultsフィールドのデフォルト、つまりフィールドのデフォルトの接頭辞で始まるフィールドについて、指定されたプロパティ値を確認します。- フィールドのデフォルトの存在は、フィールドが他に存在しない場合、指定された値を使用する必要があることを示します。 - パラメーター:
- mpvs- バインドされるプロパティ値 (変更可能)
- 関連事項:
 
- checkFieldMarkersフィールドマーカー、つまりフィールドマーカープレフィックスで始まるフィールドの指定されたプロパティ値を確認します。- フィールドマーカーの存在は、指定されたフィールドがフォームに存在したことを示します。プロパティ値に対応するフィールド値が含まれていない場合、フィールドは空と見なされ、適切にリセットされます。 - パラメーター:
- mpvs- バインドされるプロパティ値 (変更可能)
- 関連事項:
 
- adaptEmptyArrayIndices- "[]"で終わる名前のプロパティ値を確認してください。これは、明示的なインデックス値のない配列構文のために一部のクライアントによって使用されます。そのような値が見つかった場合は、括弧を削除して、データバインディングの目的で同じ値を表現する予想される方法に適合させます。- パラメーター:
- mpvs- バインドされるプロパティ値 (変更可能)
- 導入:
- 5.3
 
- getEmptyValue指定されたフィールドの空の値を判別します。- デフォルトの実装は、フィールド型が既知の場合は - getEmptyValue(Class)に委譲し、それ以外の場合は- nullにフォールバックします。- パラメーター:
- field- フィールドの名前
- fieldType- フィールドの型
- 戻り値:
-  空の値 (ほとんどのフィールド: null)
 
- getEmptyValue指定されたフィールドの空の値を判別します。- デフォルトの実装は次を返します: -  ブールフィールドの Boolean.FALSE
- 配列型の空の配列
- コレクション型のコレクション実装
- マップ型のマップ実装
- それ以外の場合、nullがデフォルトとして使用されます
 - パラメーター:
- fieldType- フィールドの型
- 戻り値:
-  空の値 (ほとんどのフィールド: null)
- 導入:
- 5.0
 
-  ブールフィールドの 
- bindMultipartprotected void bindMultipart- (MapSE<StringSE, - ListSE<MultipartFile>> multipartFiles, MutablePropertyValues mpvs) 特定のリクエストに含まれるすべてのマルチパートファイルをバインドします(マルチパートリクエストの場合)。サブクラスによって呼び出されます。- マルチパートファイルは、空でない場合、または空のマルチパートファイルもバインドするように構成されている場合にのみ、プロパティ値に追加されます。 - パラメーター:
- multipartFiles- フィールド名文字列の MultipartFile オブジェクトへのマップ
- mpvs- バインドされるプロパティ値 (変更可能)
- 関連事項: