クラス 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
フィールドのデフォルトパラメーターの先頭に続くデフォルトのプレフィックス。たとえば、フィールドが "subscribeToNewsletter" の場合は "!subscribeToNewsletter" になります。static final StringSE
フィールドマーカーパラメーターの先頭に続くデフォルトのプレフィックス。その後にフィールド名が続きます。たとえば、フィールド "subscribeToNewsletter" の場合は "_subscribeToNewsletter" になります。クラス 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
デフォルトのフィールドをマークするパラメーターのプレフィックスを返します。setBindEmptyMultipartFiles
public void setBindEmptyMultipartFiles(boolean bindEmptyMultipartFiles) 空の MultipartFile パラメーターをバインドするかどうかを設定します。デフォルトは "true" です。ユーザーが別のファイルを選択せずにフォームを再送信するときに、すでにバインドされている MultipartFile を保持する場合は、これをオフにします。そうでない場合、すでにバインドされている MultipartFile は空の MultipartFile ホルダーに置き換えられます。
- 関連事項:
isBindEmptyMultipartFiles
public 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
- ブールフィールドの
bindMultipart
protected void bindMultipart(MapSE<StringSE, ListSE<MultipartFile>> multipartFiles, MutablePropertyValues mpvs) 特定のリクエストに含まれるすべてのマルチパートファイルをバインドします(マルチパートリクエストの場合)。サブクラスによって呼び出されます。マルチパートファイルは、空でない場合、または空のマルチパートファイルもバインドするように構成されている場合にのみ、プロパティ値に追加されます。
- パラメーター:
multipartFiles
- フィールド名文字列の MultipartFile オブジェクトへのマップmpvs
- バインドされるプロパティ値 (変更可能)- 関連事項: