パッケージ jakarta.el

クラス BeanELResolver


  • public class BeanELResolver
    extends ELResolver
    JavaBeans コンポーネントアーキテクチャを使用して、オブジェクトのプロパティ解決動作を定義します。

    このリゾルバーは、ベースが null でない限り、任意の型のベースオブジェクトを処理します。プロパティまたはメソッドとして任意のオブジェクトを受け入れ、文字列に変換します。

    プロパティの解決では、プロパティ文字列を使用して、ベースオブジェクトの JavaBeans 準拠のプロパティを検索します。この値には、JavaBeans getter および setter を使用してアクセスします。

    メソッド解決の場合、メソッド文字列は Bean 内のメソッドの名前です。パラメーター型はオプションでメソッドを識別するために指定できます。パラメーター型が指定されていない場合、パラメーターオブジェクトはメソッド解決で使用されます。

    JavaBeans 仕様は、インターフェース上で定義されるデフォルトのメソッド実装の導入より前から存在しています。プロパティ getter、プロパティ setter およびメソッドを検索するための JavaBeans 仕様要件に加えて、このリゾルバーはデフォルトのメソッドも考慮し、結果に含めます。

    このリゾルバーは読み取り専用モードで構築できます。つまり、isReadOnly は常に true を返し、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) は常に PropertyNotWritableException をスローします。

    ELResolverCompositeELResolver を使用して組み合わされ、式を評価するための豊富なセマンティクスを定義します。詳細については、ELResolver の javadoc を参照してください。

    このリゾルバーはあらゆる型の基本オブジェクトを処理するため、複合リゾルバーの終わり近くに配置する必要があります。それ以外の場合は、プロパティを解決した後、後続のリゾルバーも同様にテストできるかどうかをテストする前に、プロパティを解決したと主張します。

    導入:
    Jakarta Server Pages 2.1
    関連事項:
    CompositeELResolver, ELResolver
    • コンストラクターの詳細

      • BeanELResolver

        public BeanELResolver()
        新しい読み取り / 書き込み BeanELResolver を作成します。
      • BeanELResolver

        public BeanELResolver​(boolean isReadOnly)
        指定されたパラメーターによって読み取り専用ステータスが決定される新しい BeanELResolver を作成します。
        パラメーター:
        isReadOnly - このリゾルバーが Bean を変更できない場合は true。それ以外の場合は false
    • メソッドの詳細

      • getType

        public ClassSE<?> getType​(ELContext context,
                                ObjectSE base,
                                ObjectSE property)
        基本オブジェクトが null ではない場合、この Bean プロパティに設定できる最も一般的な許容可能な型を返します。

        ベースが null ではない場合、戻る前に、このリゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

        提供されたプロパティは、最初に String に強制されます。このプロパティに BeanInfoProperty があり、その取得中にエラーがなく、プロパティもリゾルバーも読み取り専用でない場合は、propertyDescriptor の propertyType が返されます。プロパティは解決されているが、プロパティまたはリゾルバーのいずれかが読み取り専用である場合は、null が返されます。それ以外の場合は、PropertyNotFoundException がスローされます。

        次で指定:
        クラス ELResolvergetType 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析する Bean。
        property - 分析するプロパティの名前。String に強制変換されます。
        戻り値:
        ELContext の propertyResolved プロパティが true に設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型は null でなければなりません。それ以外は未定義
        例外:
        NullPointerExceptionSE - コンテキストが null の場合
        PropertyNotFoundException - base が null でなく、指定されたプロパティが存在しないか、読み取れない場合。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • getValue

        public ObjectSE getValue​(ELContext context,
                               ObjectSE base,
                               ObjectSE property)
        基本オブジェクトが null でない場合、この Bean の指定されたプロパティの現在の値を返します。

        ベースが null ではない場合、戻る前に、このリゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

        指定されたプロパティ名は、まず String に強制変換されます。プロパティが JavaBeans 仕様に従ってベースオブジェクトの読み取り可能なプロパティである場合、getter 呼び出しの結果を返します。getter が例外をスローすると、呼び出し元に伝搬されます。プロパティが見つからない、または読み込めない場合は、PropertyNotFoundException がスローされます。

        次で指定:
        クラス ELResolvergetValue 
        パラメーター:
        context - この評価のコンテキスト。
        base - プロパティを取得する Bean。
        property - 取得するプロパティの名前。String に強制変換されます。
        戻り値:
        ELContext の propertyResolved プロパティが true に設定されている場合、指定されたプロパティの値。それ以外の場合、未定義です。
        例外:
        NullPointerExceptionSE - コンテキストが null の場合。
        PropertyNotFoundException - base が null でなく、指定されたプロパティが存在しないか、読み取れない場合。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • setValue

        public void setValue​(ELContext context,
                             ObjectSE base,
                             ObjectSE property,
                             ObjectSE val)
        ベースオブジェクトが null ではない場合、この Bean に指定されたプロパティの値を設定しようとします。

        ベースが null ではない場合、戻る前に、このリゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は値が設定されていないと安全に想定できます。

        このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に PropertyNotWritableException をスローします。

        指定されたプロパティ名は、まず String に強制変換されます。property が base の書き込み可能なプロパティである場合(JavaBeans 仕様に従って)、setter メソッドが呼び出されます(value を渡す)。プロパティは存在するが setter がない場合、PropertyNotFoundException がスローされます。プロパティが存在しない場合、PropertyNotFoundException がスローされます。

        次で指定:
        クラス ELResolversetValue 
        パラメーター:
        context - この評価のコンテキスト。
        base - プロパティを設定する Bean。
        property - 設定するプロパティの名前。String に強制変換されます。
        val - 指定されたキーに関連付けられる値。
        例外:
        NullPointerExceptionSE - コンテキストが null の場合。
        PropertyNotFoundException - base が null ではなく、指定されたプロパティが存在しない場合。
        PropertyNotWritableException - このリゾルバーが読み取り専用モードで作成された場合、またはプロパティの setter がない場合。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • invoke

        public ObjectSE invoke​(ELContext context,
                             ObjectSE base,
                             ObjectSE methodName,
                             ClassSE<?>[] paramTypes,
                             ObjectSE[] params)
        基本オブジェクトが null でない場合は、この Bean の指定されたパラメーターを使用して、メソッドを呼び出します。メソッドからの戻り値が返されます。

        ベースが null ではない場合、戻る前に、このリゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

        提供されたメソッドオブジェクトは、まず String に強制変換されます。次に、Bean 内のメソッドが検査され、呼び出し用に 1 つを選択しようとします。適切なメソッドが見つからない場合は、MethodNotFoundException がスローされます。指定された paramTypes が null でない場合は、指定された名前とパラメーター型を持つメソッドを選択します。それ以外の場合は、同じ数のパラメーターを持つ指定された名前のメソッドを選択します。そのようなメソッドが複数ある場合、メソッドの選択プロセスは未定義です。それ以外の場合は、可変数の引数を取る指定された名前のメソッドを選択します。オーバーロードされたメソッドの解決は、仕様の将来のバージョンで明確にされる可能性があることに注意してください。提供されたパラメーターは、メソッドの対応するパラメーター型に強制変換され、メソッドが呼び出されます。

        オーバーライド:
        クラス ELResolverinvoke 
        パラメーター:
        context - この評価のコンテキスト。
        base - メソッドを呼び出す Bean
        methodName - 呼び出すメソッドの単純な名前。String に強制変換されます。method が "<init>" または "<clinit>" の場合、MethodNotFoundException がスローされます。
        paramTypes - メソッドの仮パラメーター型を宣言された順序で識別する Class オブジェクトの配列。メソッドにパラメーターがない場合は、空の配列を使用します。null にすることができます。その場合、メソッドの仮パラメーターの型は不明であると見なされます。
        params - メソッドに渡すパラメーター。パラメーターがない場合は null
        戻り値:
        メソッド呼び出しの結果(メソッドに void 戻り値の型がある場合は null)。
        例外:
        MethodNotFoundException - 適切な方法が見つからない場合。
        ELException - (ベース、メソッド)解決の実行中に例外がスローされた場合スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。スローされた例外が InvocationTargetException の場合、その cause を抽出し、それを ELException コンストラクターに渡します。
        導入:
        Jakarta Expression Language 2.2
      • isReadOnly

        public boolean isReadOnly​(ELContext context,
                                  ObjectSE base,
                                  ObjectSE property)
        基本オブジェクトが null でない場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) の呼び出しが常に失敗するかどうかを返します。

        ベースが null ではない場合、戻る前に、このリゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は値が設定されていないと安全に想定できます。

        このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に true を返します。

        指定されたプロパティ名は、まず String に強制変換されます。property が base の書き込み可能なプロパティである場合、false が返されます。プロパティが見つかったが書き込み不可の場合、true が返されます。プロパティが見つからない場合、PropertyNotFoundException がスローされます。

        次で指定:
        クラス ELResolverisReadOnly 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析する Bean。
        property - 分析するプロパティの名前。String に強制変換されます。
        戻り値:
        ELContext の propertyResolved プロパティが true に設定されている場合、setValue メソッドの呼び出しが常に失敗する場合は true、そのような呼び出しが成功する可能性がある場合は false。それ以外は未定義。
        例外:
        NullPointerExceptionSE - コンテキストが null の場合
        PropertyNotFoundException - base が null ではなく、指定されたプロパティが存在しない場合。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • getFeatureDescriptors

        @DeprecatedSE(forRemoval=true,
                    since="5.0")
        public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors​(ELContext context,
                                                                 ObjectSE base)
        非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
        このメソッドは、EL 6.0 では代替なしで削除されます
        基本オブジェクトが null ではない場合、指定されたオブジェクトで使用可能な JavaBeans プロパティのセットを含む Iterator を返します。それ以外の場合は、null を返します。

        返される Iterator には、ゼロ個以上の FeatureDescriptorSE のインスタンスが含まれている必要があります。各 info オブジェクトには、BeanInfo.getPropertyDescriptors メソッドを呼び出して取得した、Bean のプロパティに関する情報が含まれています。FeatureDescriptor は、PropertyDescriptor と同じフィールドを使用して初期化され、必須の名前付き属性 "type" および "resolvableAtDesignTime" が次のように設定されます。

        オーバーライド:
        クラス ELResolvergetFeatureDescriptors 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析する Bean。
        戻り値:
        ゼロ個以上の FeatureDescriptor オブジェクトを含む Iterator。それぞれがこの Bean のプロパティを表す。base オブジェクトが null の場合は null
        関連事項:
        FeatureDescriptorSE
      • getCommonPropertyType

        public ClassSE<?> getCommonPropertyType​(ELContext context,
                                              ObjectSE base)
        基本オブジェクトが null ではない場合、このリゾルバーが property 引数として受け入れる最も一般的な型を返します。それ以外の場合は、null を返します。

        ベースが null ではないと仮定すると、このメソッドは常に Object.class を返します。これは、すべてのオブジェクトがキーとして受け入れられ、文字列に強制変換されるためです。

        次で指定:
        クラス ELResolvergetCommonPropertyType 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析する Bean。
        戻り値:
        ベースが null の場合は null。それ以外の場合は Object.class