クラス DataBinder

java.lang.ObjectSE
org.springframework.validation.DataBinder
実装されたすべてのインターフェース:
PropertyEditorRegistryTypeConverter
既知の直属サブクラス
WebDataBinder

public class DataBinder extends ObjectSE implements PropertyEditorRegistry, TypeConverter
コンストラクターと setter インジェクションを介してターゲットオブジェクトにプロパティ値を適用できるようにするバインダー。また、検証とバインディング結果の分析もサポートします。

バインドプロセスは、許可されるフィールドパターン、必須フィールド、カスタムエディターなどを指定することでカスタマイズできます。

警告 : データバインディングは、外部クライアントによるアクセスや変更を目的としていないオブジェクトグラフの部分を公開することにより、セキュリティの課題を引き起こす可能性があります。データバインディングの設計と使用は、セキュリティに関して慎重に検討する必要があります。詳細については、リファレンスマニュアルの 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
関連事項:
  • フィールドの詳細

    • DEFAULT_OBJECT_NAME

      public static final StringSE DEFAULT_OBJECT_NAME
      バインドに使用されるデフォルトのオブジェクト名: 「ターゲット」。
      関連事項:
    • DEFAULT_AUTO_GROW_COLLECTION_LIMIT

      public static final int DEFAULT_AUTO_GROW_COLLECTION_LIMIT
      配列およびコレクションの成長のデフォルト制限: 256。
      関連事項:
    • logger

      protected static final Log logger
      多くの DataBinder インスタンスを作成します。静的ロガーを使用しましょう。
  • コンストラクターの詳細

    • DataBinder

      public DataBinder(@Nullable ObjectSE target)
      デフォルトのオブジェクト名で、新しい DataBinder インスタンスを作成します。
      パラメーター:
      target - バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合は null )
      関連事項:
    • DataBinder

      public DataBinder(@Nullable ObjectSE target, StringSE objectName)
      新しい DataBinder インスタンスを作成します。
      パラメーター:
      target - バインドするターゲットオブジェクト (または、バインダーが単なるパラメーター値の変換に使用される場合は null )
      objectName - ターゲットオブジェクトの名前
  • メソッドの詳細

    • getTarget

      @Nullable public ObjectSE getTarget()
      ラップされたターゲットオブジェクトを返します。

      ターゲットオブジェクトが null で、getTargetType() が設定されている場合、construct(ValueResolver) を呼び出してターゲットを作成できます。

    • getObjectName

      public StringSE getObjectName()
      バインドされたオブジェクトの名前を返します。
    • setTargetType

      public void setTargetType(ResolvableType targetType)
      ターゲットオブジェクトの型を設定します。ターゲットが null の場合、targetType を設定すると、construct(org.springframework.validation.DataBinder.ValueResolver) を使用してターゲットを作成できます。
      パラメーター:
      targetType - 対象オブジェクトの型
      導入:
      6.1
      関連事項:
    • getTargetType

      @Nullable public ResolvableType 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

      protected AbstractPropertyBindingResult createBeanPropertyBindingResult()
      標準の JavaBean プロパティアクセスを使用して AbstractPropertyBindingResult インスタンスを作成します。
      導入:
      4.2.1
    • initDirectFieldAccess

      public void initDirectFieldAccess()
      デフォルトの Bean プロパティアクセスの代替として、この DataBinder の直接フィールドアクセスを初期化します。
      関連事項:
    • createDirectFieldBindingResult

      protected AbstractPropertyBindingResult createDirectFieldBindingResult()
      直接フィールドアクセスを使用して AbstractPropertyBindingResult インスタンスを作成します。
      導入:
      4.2.1
    • getInternalBindingResult

      protected AbstractPropertyBindingResult getInternalBindingResult()
      この DataBinder が保持している内部 BindingResult を AbstractPropertyBindingResult として返します。
    • getPropertyAccessor

      protected ConfigurablePropertyAccessor getPropertyAccessor()
      このバインダーの BindingResult の基になる PropertyAccessor を返します。
    • getSimpleTypeConverter

      protected SimpleTypeConverter getSimpleTypeConverter()
      このバインダーの基になる SimpleTypeConverter を返します。
    • getPropertyEditorRegistry

      protected PropertyEditorRegistry getPropertyEditorRegistry()
      このバインダーの BindingResult の基になる TypeConverter を返します。
    • getTypeConverter

      protected TypeConverter getTypeConverter()
      このバインダーの BindingResult の基になる TypeConverter を返します。
    • getBindingResult

      public BindingResult getBindingResult()
      この DataBinder によって作成された BindingResult インスタンスを返します。これにより、バインド操作後のバインド結果への便利なアクセスが可能になります。
      戻り値:
      BindingResult またはエラーインスタンスとして処理される BindingResult インスタンス (エラーは BindingResult のスーパーインターフェースです)
      関連事項:
    • setDeclarativeBinding

      public void setDeclarativeBinding(boolean declarativeBinding)
      以下を含む、明示的にバインドすることを目的としたフィールドのみをバインドするかどうかを設定します。

      デフォルトは "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

      public void setAllowedFields(@Nullable StringSE... allowedFields)
      バインドを許可する必要があるフィールドパターンを登録します。

      デフォルトはすべてのフィールドです。

      これを制限して、たとえば、HTTP リクエストパラメーターをバインドするときに悪意のあるユーザーによる不要な変更を回避します。

      "xxx*""*xxx""*xxx*""xxx*yyy" の一致(任意の数のパターンパーツを使用)、および直接の同等性をサポートします。

      このメソッドのデフォルトの実装では、許可されたフィールドパターンが標準形式で保存されます。このメソッドをオーバーライドするサブクラスは、これを考慮に入れる必要があります。

      isAllowed(java.lang.String) メソッドをオーバーライドすることにより、より高度なマッチングを実装できます。

      または、 許可されていないフィールドパターンのリストを指定します。

      bind(PropertyValues) を使用したフィールドへのバインドに使用され、必要な値のみを使用する construct(org.springframework.validation.DataBinder.ValueResolver) を介したコンストラクターバインドには適用されません。

      パラメーター:
      allowedFields - 許可されたフィールドパターンの配列
      関連事項:
    • getAllowedFields

      @Nullable public StringSE[] getAllowedFields()
      バインドを許可する必要があるフィールドパターンを返します。
      戻り値:
      許可されたフィールドパターンの配列
      関連事項:
    • setDisallowedFields

      public void setDisallowedFields(@Nullable StringSE... disallowedFields)
      バインドを許可しないフィールドパターンを登録します。

      デフォルトはなしです。

      たとえば、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

      @Nullable public StringSE[] getDisallowedFields()
      バインドを許可してはならないフィールドパターンを返します。
      戻り値:
      許可されていないフィールドパターンの配列
      関連事項:
    • setRequiredFields

      public void setRequiredFields(@Nullable StringSE... requiredFields)
      各バインディングプロセスに必要なフィールドを登録します。

      指定されたフィールドのいずれかが受信プロパティ値のリストに含まれていない場合、対応する「フィールドがありません」エラーが作成され、エラーコード「必須」がデフォルトのバインドエラープロセッサーによって作成されます。

      bind(PropertyValues) を使用したフィールドへのバインドに使用され、必要な値のみを使用する construct(org.springframework.validation.DataBinder.ValueResolver) を介したコンストラクターバインドには適用されません。

      パラメーター:
      requiredFields - フィールド名の配列
      関連事項:
    • getRequiredFields

      @Nullable public StringSE[] getRequiredFields()
      各バインディングプロセスに必要なフィールドを返します。
      戻り値:
      フィールド名の配列
    • setNameResolver

      public void setNameResolver(DataBinder.NameResolver nameResolver)
      construct(org.springframework.validation.DataBinder.ValueResolver) のコンストラクターパラメーターにバインドする値の名前を決定するようにリゾルバーを構成します。

      構成されていない場合、または名前を解決できない場合は、デフォルトで DefaultParameterNameDiscoverer が使用されます。

      パラメーター:
      nameResolver - 使用するリゾルバー
      導入:
      6.1
    • getNameResolver

      @Nullable public DataBinder.NameResolver getNameResolver()
      コンストラクターパラメーターの configured ネームリゾルバーを返します。
      導入:
      6.1
    • setMessageCodesResolver

      public void setMessageCodesResolver(@Nullable MessageCodesResolver messageCodesResolver)
      エラーをメッセージコードに解決するために使用する戦略を設定します。指定された戦略を基礎となるエラー保持者に適用します。

      デフォルトは DefaultMessageCodesResolver です。

      関連事項:
    • setBindingErrorProcessor

      public void setBindingErrorProcessor(BindingErrorProcessor bindingErrorProcessor)
      バインディングエラーの処理に使用する戦略、つまり、必須フィールドエラーと PropertyAccessException を設定します。

      デフォルトは DefaultBindingErrorProcessor です。

      関連事項:
    • getBindingErrorProcessor

      public BindingErrorProcessor getBindingErrorProcessor()
      バインディングエラーを処理するための戦略を返します。
    • setValidator

      public void setValidator(@Nullable Validator validator)
      各バインディングステップの後に適用するように Validator を設定します。
      関連事項:
    • setExcludedValidators

      public void setExcludedValidators(PredicateSE<Validator> predicate)
      バリデータを除外する述語を構成します。
      導入:
      6.1
    • addValidators

      public void addValidators(Validator... validators)
      各バインディングステップの後に適用するバリデーターを追加します。
      関連事項:
    • replaceValidators

      public void replaceValidators(Validator... validators)
      各バインディングステップの後に適用するバリデーターを置き換えます。
      関連事項:
    • getValidator

      @Nullable public Validator getValidator()
      各バインディングステップの後に適用するプライマリバリデータを返します(ある場合)。
    • getValidators

      public ListSE<Validator> getValidators()
      データバインディング後に適用するバリデーターを返します。
    • getValidatorsToApply

      public ListSE<Validator> getValidatorsToApply()
      データバインディング後に適用するバリデータを返します。これには、exclude predicate によってフィルタリングされた構成済みの validators が含まれます。
      導入:
      6.1
    • setConversionService

      public void setConversionService(@Nullable ConversionService conversionService)
      JavaBeans PropertyEditors の代わりに、プロパティ値の変換に使用する ConversionService を指定します。
    • getConversionService

      @Nullable public ConversionService getConversionService()
      関連する ConversionService があれば、それを返します。
    • addCustomFormatter

      public void addCustomFormatter(Formatter<?> formatter)
      カスタムフォーマッターを追加し、Formatter -declared 型に一致するすべてのフィールドに適用します。

      対応する PropertyEditorSE アダプターをカバーに登録します。

      パラメーター:
      formatter - 追加するフォーマッタ、特定の型に対して一般的に宣言された
      導入:
      4.2
      関連事項:
    • addCustomFormatter

      public void addCustomFormatter(Formatter<?> formatter, StringSE... fields)
      Formatter クラスで指定されたフィールド型のカスタムフォーマッタを追加し、指定されたフィールドのみ(存在する場合)に適用するか、そうでなければすべてのフィールドに適用します。

      対応する PropertyEditorSE アダプターをカバーに登録します。

      パラメーター:
      formatter - 追加するフォーマッタ、特定の型に対して一般的に宣言された
      fields - フォーマッタを適用するフィールド、またはすべてに適用する場合はなし
      導入:
      4.2
      関連事項:
    • addCustomFormatter

      public void addCustomFormatter(Formatter<?> formatter, ClassSE<?>... fieldTypes)
      カスタムフォーマッターを追加し、指定されたフィールド型(存在する場合のみ)に適用するか、Formatter -declared 型に一致するすべてのフィールドに適用します。

      対応する PropertyEditorSE アダプターをカバーに登録します。

      パラメーター:
      formatter - 追加するフォーマッタ (フィールド型がパラメーターとして明示的に指定されている場合、フィールド型を総称的に宣言する必要はありません。)
      fieldTypes - フォーマッタを適用するフィールド型、または指定された Formatter 実装クラスから派生する場合はなし
      導入:
      4.2
      関連事項:
    • registerCustomEditor

      public void registerCustomEditor(ClassSE<?> requiredType, PropertyEditorSE propertyEditor)
      インターフェースからコピーされた説明: PropertyEditorRegistry
      指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。
      次で指定:
      インターフェース PropertyEditorRegistryregisterCustomEditor 
      パラメーター:
      requiredType - プロパティの型
      propertyEditor - 登録するエディター
    • registerCustomEditor

      public void registerCustomEditor(@Nullable ClassSE<?> requiredType, @Nullable StringSE field, PropertyEditorSE propertyEditor)
      インターフェースからコピーされた説明: PropertyEditorRegistry
      指定された型とプロパティ、または指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。

      プロパティパスが配列またはコレクションプロパティを示す場合、エディターは配列 / コレクション自体(PropertyEditorSE が配列またはコレクション値を作成する必要がある)または各要素(PropertyEditor が要素型を作成する必要がある)のいずれかに適用されます。指定された必須型に応じて。

      メモ: プロパティパスごとに 1 つの登録済みカスタムエディターのみがサポートされます。コレクション / 配列の場合、コレクション / 配列と同じプロパティの各要素の両方にエディターを登録しないでください。

      たとえば、"items[n].quantity" (すべての値 n)のエディターを登録する場合は、このメソッドの "propertyPath" 引数の値として "items.quantity" を使用します。

      次で指定:
      インターフェース PropertyEditorRegistryregisterCustomEditor 
      パラメーター:
      requiredType - プロパティの型。これは、プロパティが指定されている場合でも null である可能性がありますが、特にコレクションの場合は特に指定する必要があります。エディター全体がコレクション自体に適用されるか、各エントリに適用されるかを明確にします。一般的なルールとして、Collection/array の場合は、ここで null を指定しないでください!
      field - プロパティのパス(名前またはネストされたパス)、または指定された型のすべてのプロパティのエディターを登録する場合は null 
      propertyEditor - 登録するエディター
    • findCustomEditor

      @Nullable public PropertyEditorSE findCustomEditor(@Nullable ClassSE<?> requiredType, @Nullable StringSE propertyPath)
      インターフェースからコピーされた説明: PropertyEditorRegistry
      指定された型とプロパティのカスタムプロパティエディターを見つけます。
      次で指定:
      インターフェース PropertyEditorRegistryfindCustomEditor 
      パラメーター:
      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 コンバーターを使用します。

      次で指定:
      インターフェース TypeConverterconvertIfNecessary 
      パラメーター:
      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 コンバーターを使用します。

      次で指定:
      インターフェース TypeConverterconvertIfNecessary 
      パラメーター:
      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 コンバーターを使用します。

      次で指定:
      インターフェース TypeConverterconvertIfNecessary 
      パラメーター:
      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 コンバーターを使用します。

      次で指定:
      インターフェース TypeConverterconvertIfNecessary 
      パラメーター:
      value - 変換する値
      requiredType - 変換する必要がある型 (または null (不明な場合、たとえばコレクション要素の場合))
      typeDescriptor - 使用する型記述子(null の場合があります)
      戻り値:
      新しい値、場合によっては型変換の結果
      例外:
      TypeMismatchException - 型変換が失敗した場合
      関連事項:
    • construct

      public void construct(DataBinder.ValueResolver valueResolver)
      値のコンストラクターインジェクションを使用してターゲットを作成します。setTargetType(ResolvableType) は以前に呼び出されており、getTarget() は null であることが予想されます。

      ターゲットオブジェクト型で利用可能な場合は引数なしのパブリックコンストラクターを使用し、次のようなデータクラスの「プライマリコンストラクター」アプローチもサポートします。JavaBeans ConstructorProperties アノテーションとバイトコード内のランタイム保持パラメーター名を理解し、入力を関連付けます。名前によるコンストラクター引数を持つ値。そのようなコンストラクターが見つからない場合は、setter メソッドによる後続の Bean プロパティバインディングを想定して、デフォルトのコンストラクターが (パブリックでなくても) 使用されます。

      呼び出し後、getBindingResult() を使用してバインドの失敗を確認したり、コンストラクター引数を検証したりします。エラーがない場合、ターゲットが設定され、doBind(MutablePropertyValues) を setter 経由のさらなる初期化に使用できます。

      パラメーター:
      valueResolver - コンストラクターの引数の値を解決するには
      例外:
      BeanInstantiationException - コンストラクターが失敗した場合
      導入:
      6.1
    • shouldConstructArgument

      protected boolean shouldConstructArgument(MethodParameter param)
      指定された型のコンストラクター引数をインスタンス化して、独自のコンストラクター引数をバインド値に照合するかどうか。

      デフォルトでは、単純な値型、マップ、コレクション、配列は、ネストされたコンストラクターバインディングの初期化から除外されます。

      導入:
      6.1.2
    • bind

      public void bind(PropertyValues pvs)
      指定されたプロパティ値をこのバインダーのターゲットにバインドします。

      この呼び出しにより、必須フィールド (コード「必須」) などの基本的なバインディングエラーや、値と Bean プロパティ (コード "typeMismatch" ) の型の不一致を表すフィールドエラーが発生する可能性があります。

      指定された PropertyValues は使い捨てインスタンスである必要があることに注意してください。効率を上げるため、MutablePropertyValues インターフェースを実装する場合、許可されたフィールドのみを含むように変更されます。それ以外の場合、この目的のために内部可変コピーが作成されます。いずれの場合も元のインスタンスを変更しないでおくには、PropertyValues のコピーを渡します。

      パラメーター:
      pvs - バインドするプロパティ値
      関連事項:
    • shouldNotBindPropertyValues

      protected boolean shouldNotBindPropertyValues()
      パラメーターをプロパティにバインドしないかどうか。isDeclarativeBinding() がオンで、allowedFields が構成されていない場合は、"true" を返します。
      導入:
      6.1
    • doBind

      protected void doBind(MutablePropertyValues mpvs)
      渡された MutablePropertyValues インスタンスと連携する、バインディングプロセスの実際の実装。
      パラメーター:
      mpvs - MutablePropertyValues インスタンスとしてバインドするプロパティ値
      関連事項:
    • checkAllowedFields

      protected void checkAllowedFields(MutablePropertyValues mpvs)
      許可されたフィールドに対して特定のプロパティ値を確認し、許可されていないフィールドの値を削除します。
      パラメーター:
      mpvs - バインドされるプロパティ値 (変更可能)
      関連事項:
    • isAllowed

      protected boolean isAllowed(StringSE field)
      指定されたフィールドがバインドを許可されているかどうかを判別します。

      渡されたプロパティ値ごとに呼び出されます。

      許可されたフィールドパターンと許可されていないフィールドパターンの構成済みリストで、"xxx*""*xxx""*xxx*""xxx*yyy" の一致(任意の数のパターンパーツを使用)および直接の同等性をチェックします。

      許可されたフィールドパターンとの照合では、大文字と小文字が区別されます。一方、許可されていないフィールドパターンとの照合では、大文字と小文字は区別されません。

      許可されていないパターンに一致するフィールドは、許可されたリストのパターンにも一致する場合でも受け入れられません。

      サブクラスでオーバーライドできますが、前述の契約を尊重するように注意する必要があります。

      パラメーター:
      field - チェックするフィールド
      戻り値:
      フィールドが許可されている場合は true 
      関連事項:
    • checkRequiredFields

      protected void checkRequiredFields(MutablePropertyValues mpvs)
      必要なフィールドに対して指定されたプロパティ値を確認し、必要に応じて欠落フィールドエラーを生成します。
      パラメーター:
      mpvs - バインドされるプロパティ値 (変更可能)
      関連事項:
    • applyPropertyValues

      protected void applyPropertyValues(MutablePropertyValues mpvs)
      指定されたプロパティ値をターゲットオブジェクトに適用します。

      デフォルトの実装では、提供されたすべてのプロパティ値が Bean プロパティ値として適用されます。デフォルトでは、不明なフィールドは無視されます。

      パラメーター:
      mpvs - バインドされるプロパティ値 (変更可能)
      関連事項:
    • validate

      public void validate()
      指定されたバリデータがある場合は呼び出します。
      関連事項:
    • validate

      public void validate(ObjectSE... validationHints)
      指定された検証ヒントがあれば、指定された検証ヒントを呼び出します。

      メモ: 検証ヒントは、実際のターゲット Validator によって無視される場合があります。

      パラメーター:
      validationHints - SmartValidator に渡される 1 つ以上のヒントオブジェクト
      導入:
      3.1
      関連事項:
    • close

      public MapSE<?,?> close() throws BindException
      この DataBinder を閉じると、エラーが発生した場合に BindException がスローされる可能性があります。
      戻り値:
      ターゲットオブジェクトとエラーインスタンスを含むモデルマップ
      例外:
      BindException - バインド操作にエラーがあった場合
      関連事項: