パッケージ org.springframework.beans

クラス AbstractNestablePropertyAccessor

実装されたすべてのインターフェース:
ConfigurablePropertyAccessorPropertyAccessorPropertyEditorRegistryTypeConverter
既知の直属サブクラス
BeanWrapperImplDirectFieldAccessor

public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyAccessor
すべての典型的な使用例に必要なインフラストラクチャを提供する基本的な ConfigurablePropertyAccessor

このアクセサーは、必要に応じて、コレクションと配列の値を対応するターゲットコレクションまたは配列に変換します。コレクションまたは配列を処理するカスタムプロパティエディターは、配列自体が割り当て可能でない場合、String 配列がこのような形式に変換されるため、PropertyEditor の setValue を介して、または setAsText を介してコンマ区切りの String に対して記述できます。

導入:
4.2
作成者:
Juergen Hoeller, Stephane Nicoll, Rod Johnson, Rob Harrop, Sam Brannen
関連事項:
  • コンストラクターの詳細

    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor()
      新しい空のアクセサーを作成します。ラップされたインスタンスは後で設定する必要があります。デフォルトのエディターを登録します。
      関連事項:
    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor(boolean registerDefaultEditors)
      新しい空のアクセサーを作成します。ラップされたインスタンスは後で設定する必要があります。
      パラメーター:
      registerDefaultEditors - デフォルトのエディターを登録するかどうか (アクセサーが型変換を必要としない場合は抑制できます)
      関連事項:
    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor(ObjectSE object)
      指定されたオブジェクトの新しいアクセサーを作成します。
      パラメーター:
      object - このアクセサーによってラップされたオブジェクト
    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor(ClassSE<?> clazz)
      指定したクラスの新しいインスタンスをラップして、新しいアクセサーを作成します。
      パラメーター:
      clazz - インスタンス化してラップするクラス
    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor(ObjectSE object, StringSE nestedPath, ObjectSE rootObject)
      指定されたオブジェクトの新しいアクセサーを作成し、オブジェクトが含まれているネストされたパスを登録します。
      パラメーター:
      object - このアクセサーによってラップされたオブジェクト
      nestedPath - オブジェクトのネストされたパス
      rootObject - パスの上部にあるルートオブジェクト
    • AbstractNestablePropertyAccessor

      protected AbstractNestablePropertyAccessor(ObjectSE object, StringSE nestedPath, AbstractNestablePropertyAccessor parent)
      指定されたオブジェクトの新しいアクセサーを作成し、オブジェクトが含まれているネストされたパスを登録します。
      パラメーター:
      object - このアクセサーによってラップされたオブジェクト
      nestedPath - オブジェクトのネストされたパス
      parent - 含まれるアクセサー (null であってはなりません)
  • メソッドの詳細

    • setAutoGrowCollectionLimit

      public void setAutoGrowCollectionLimit(int autoGrowCollectionLimit)
      配列およびコレクションの自動拡張の制限を指定します。

      プレーンアクセサーのデフォルトは無制限です。

    • getAutoGrowCollectionLimit

      public int getAutoGrowCollectionLimit()
      配列およびコレクションの自動拡張の制限を返します。
    • setWrappedInstance

      public void setWrappedInstance(ObjectSE object)
      新しいオブジェクトのクラスが置き換えられたオブジェクトのクラスと異なる場合にのみ、ターゲットオブジェクトを切り替えて、キャッシュされたイントロスペクションの結果を置き換えます。
      パラメーター:
      object - 新しいターゲットオブジェクト
    • setWrappedInstance

      public void setWrappedInstance(ObjectSE object, @Nullable StringSE nestedPath, @Nullable ObjectSE rootObject)
      新しいオブジェクトのクラスが置き換えられたオブジェクトのクラスと異なる場合にのみ、ターゲットオブジェクトを切り替えて、キャッシュされたイントロスペクションの結果を置き換えます。
      パラメーター:
      object - 新しいターゲットオブジェクト
      nestedPath - オブジェクトのネストされたパス
      rootObject - パスの上部にあるルートオブジェクト
    • getWrappedInstance

      public final ObjectSE getWrappedInstance()
    • getWrappedClass

      public final ClassSE<?> getWrappedClass()
    • getNestedPath

      public final StringSE getNestedPath()
      このアクセサーによってラップされたオブジェクトのネストされたパスを返します。
    • getRootInstance

      public final ObjectSE getRootInstance()
      このアクセサーのパスの先頭にあるルートオブジェクトを返します。
      関連事項:
    • getRootClass

      public final ClassSE<?> getRootClass()
      このアクセサーのパスの先頭にあるルートオブジェクトのクラスを返します。
      関連事項:
    • setPropertyValue

      public void setPropertyValue(StringSE propertyName, @Nullable ObjectSE value) throws BeansException
      クラスからコピーされた説明: AbstractPropertyAccessor
      実際にプロパティ値を設定します。
      次で指定:
      インターフェース PropertyAccessorsetPropertyValue 
      次で指定:
      クラス AbstractPropertyAccessorsetPropertyValue 
      パラメーター:
      propertyName - 値を設定するプロパティの名前
      value - 新しい価値
      例外:
      InvalidPropertyException - そのようなプロパティがない場合、またはプロパティが書き込み可能でない場合
      PropertyAccessException - プロパティは有効であるが、アクセサーメソッドが失敗したか、型の不一致が発生した場合
      BeansException
    • setPropertyValue

      public void setPropertyValue(PropertyValue pv) throws BeansException
      インターフェースからコピーされた説明: PropertyAccessor
      指定した値を現在のプロパティ値として設定します。
      次で指定:
      インターフェース PropertyAccessorsetPropertyValue 
      オーバーライド:
      クラス AbstractPropertyAccessorsetPropertyValue 
      パラメーター:
      pv - 新しいプロパティ値を含むオブジェクト
      例外:
      InvalidPropertyException - そのようなプロパティがない場合、またはプロパティが書き込み可能でない場合
      PropertyAccessException - プロパティは有効であるが、アクセサーメソッドが失敗したか、型の不一致が発生した場合
      BeansException
    • setPropertyValue

      protected void setPropertyValue(AbstractNestablePropertyAccessor.PropertyTokenHolder tokens, PropertyValue pv) throws BeansException
      例外:
      BeansException
    • getPropertyType

      @Nullable public ClassSE<?> getPropertyType(StringSE propertyName) throws BeansException
      クラスからコピーされた説明: PropertyEditorRegistrySupport
      指定されたプロパティパスのプロパティ型を決定します。

      必須の型が指定されていない場合に PropertyEditorRegistrySupport.findCustomEditor(java.lang.Class<?>, java.lang.String) によって呼び出され、プロパティパスを指定しただけでも型固有のエディターを検索できるようにします。

      デフォルトの実装は、常に null を返します。BeanWrapperImpl は、BeanWrapper インターフェースで定義されている標準の getPropertyType メソッドでこれをオーバーライドします。

      次で指定:
      インターフェース PropertyAccessorgetPropertyType 
      オーバーライド:
      クラス AbstractPropertyAccessorgetPropertyType 
      パラメーター:
      propertyName - 型を決定するプロパティパス
      戻り値:
      プロパティの型、または判別できない場合は null 
      例外:
      PropertyAccessException - プロパティは有効だったが、アクセサーメソッドが失敗した場合
      BeansException
      関連事項:
    • getPropertyTypeDescriptor

      @Nullable public TypeDescriptor getPropertyTypeDescriptor(StringSE propertyName) throws BeansException
      インターフェースからコピーされた説明: PropertyAccessor
      指定されたプロパティの型記述子を返します。できれば読み取りメソッドから、書き込みメソッドにフォールバックしてください。
      パラメーター:
      propertyName - チェックするプロパティ (ネストされたパスおよび / またはインデックス付き / マップされたプロパティ)
      戻り値:
      特定のプロパティのプロパティ型、または決定できない場合は null 
      例外:
      PropertyAccessException - プロパティは有効だったが、アクセサーメソッドが失敗した場合
      BeansException
    • isReadableProperty

      public boolean isReadableProperty(StringSE propertyName)
      インターフェースからコピーされた説明: PropertyAccessor
      指定したプロパティが読み取り可能かどうかを判断します。

      プロパティが存在しない場合、false を返します。

      パラメーター:
      propertyName - チェックするプロパティ (ネストされたパスおよび / またはインデックス付き / マップされたプロパティ)
      戻り値:
      プロパティが読み取り可能かどうか
    • isWritableProperty

      public boolean isWritableProperty(StringSE propertyName)
      インターフェースからコピーされた説明: PropertyAccessor
      指定されたプロパティが書き込み可能かどうかを判断します。

      プロパティが存在しない場合、false を返します。

      パラメーター:
      propertyName - チェックするプロパティ (ネストされたパスおよび / またはインデックス付き / マップされたプロパティ)
      戻り値:
      プロパティが書き込み可能かどうか
    • convertForProperty

      @Nullable protected ObjectSE convertForProperty(StringSE propertyName, @Nullable ObjectSE oldValue, @Nullable ObjectSE newValue, TypeDescriptor td) throws TypeMismatchException
      例外:
      TypeMismatchException
    • getPropertyValue

      @Nullable public ObjectSE getPropertyValue(StringSE propertyName) throws BeansException
      クラスからコピーされた説明: AbstractPropertyAccessor
      実際にプロパティの値を取得します。
      次で指定:
      インターフェース PropertyAccessorgetPropertyValue 
      次で指定:
      クラス AbstractPropertyAccessorgetPropertyValue 
      パラメーター:
      propertyName - 値を取得するプロパティの名前
      戻り値:
      プロパティの値
      例外:
      InvalidPropertyException - そのようなプロパティがない場合、またはプロパティが読めない場合
      PropertyAccessException - プロパティは有効だったが、アクセサーメソッドが失敗した場合
      BeansException
    • getPropertyValue

      例外:
      BeansException
    • getPropertyHandler

      @Nullable protected AbstractNestablePropertyAccessor.PropertyHandler getPropertyHandler(StringSE propertyName) throws BeansException
      指定された propertyNameAbstractNestablePropertyAccessor.PropertyHandler を返し、必要に応じてナビゲートします。例外をスローするのではなく、見つからない場合は null を返します。
      パラメーター:
      propertyName - 記述子を取得するプロパティ
      戻り値:
      指定されたプロパティのプロパティ記述子、または見つからない場合は null 
      例外:
      BeansException - イントロスペクションが失敗した場合
    • getLocalPropertyHandler

      @Nullable protected abstract AbstractNestablePropertyAccessor.PropertyHandler getLocalPropertyHandler(StringSE propertyName)
      指定されたローカル propertyNameAbstractNestablePropertyAccessor.PropertyHandler を返します。現在のコンテキストで利用可能なプロパティに到達するためにのみ使用されます。
      パラメーター:
      propertyName - ローカルプロパティの名前
      戻り値:
      そのプロパティのハンドラー、または null が見つからない場合
    • newNestedPropertyAccessor

      protected abstract AbstractNestablePropertyAccessor newNestedPropertyAccessor(ObjectSE object, StringSE nestedPath)
      新しいネストされたプロパティアクセサーインスタンスを作成します。サブクラスでオーバーライドして、PropertyAccessor サブクラスを作成できます。
      パラメーター:
      object - この PropertyAccessor によってラップされたオブジェクト
      nestedPath - オブジェクトのネストされたパス
      戻り値:
      ネストされた PropertyAccessor インスタンス
    • createNotWritablePropertyException

      protected abstract NotWritablePropertyException createNotWritablePropertyException(StringSE propertyName)
      指定されたプロパティの NotWritablePropertyException を作成します。
    • getFinalPath

      protected StringSE getFinalPath(AbstractNestablePropertyAccessor pa, StringSE nestedPath)
      パスの最後のコンポーネントを取得します。ネストされていない場合にも機能します。
      パラメーター:
      pa - 作業するプロパティアクセサー
      nestedPath - ネストされていることがわかっているプロパティパス
      戻り値:
      パスの最後のコンポーネント (ターゲット Bean のプロパティ)
    • getPropertyAccessorForPropertyPath

      protected AbstractNestablePropertyAccessor getPropertyAccessorForPropertyPath(StringSE propertyPath)
      再帰的にナビゲートして、ネストされたプロパティパスのプロパティアクセサーを返します。
      パラメーター:
      propertyPath - ネストできるプロパティパス
      戻り値:
      ターゲット Bean のプロパティアクセサー
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString