パッケージ jakarta.el

クラス MapELResolver


  • public class MapELResolver
    extends ELResolver
    MapSE のインスタンスのプロパティ解決動作を定義します。

    このリゾルバーは、型 java.util.Map のベースオブジェクトを処理します。任意のオブジェクトをプロパティとして受け入れ、そのオブジェクトをマップのキーとして使用します。結果の値は、そのキーに関連付けられているマップ内の値です。

    このリゾルバーは読み取り専用モードで構築できます。つまり、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, MapSE
    • コンストラクターの詳細

      • MapELResolver

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

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

      • getType

        public ClassSE<?> getType​(ELContext context,
                                ObjectSE base,
                                ObjectSE property)
        ベースオブジェクトがマップの場合、このマップの値に対して最も一般的に受け入れられる型を返します。

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

        ベースが Map であると仮定すると、リゾルバーが読み取り専用モードで構築されていない限り、このメソッドは常に Object.class を返します。読み取り専用モードの場合は null が返されます。これは、Map が特定のキーの値として任意のオブジェクトを受け入れるためです。

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

        public ObjectSE getValue​(ELContext context,
                               ObjectSE base,
                               ObjectSE property)
        ベースオブジェクトがマップの場合、property 引数で指定されているように、指定されたキーに関連付けられた値を返します。キーが見つからなかった場合は、null が返されます。

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

        Map.get(java.lang.Object)SE の場合と同様に、null が返されるからといって、キーのマッピングがないことを意味するわけではありません。Map がキーを null に明示的にマップすることも可能です。

        次で指定:
        クラス ELResolvergetValue 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析するマップ。型 Map のベースのみがこのリゾルバーによって処理されます。
        property - 関連する値が返されるキー。
        戻り値:
        ELContext の propertyResolved プロパティが true に設定されている場合、指定されたキーに関連付けられている値、キーが見つからなかった場合は null。それ以外の場合は未定義です。
        例外:
        ClassCastExceptionSE - キーがこのマップに不適切な型である場合(オプションで、基になる Map によってスローされます)。
        NullPointerExceptionSE - コンテキストが null の場合、またはキーが null であり、このマップが null キーを許可しない場合(後者はオプションで基になる Map によってスローされます)。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • setValue

        public void setValue​(ELContext context,
                             ObjectSE base,
                             ObjectSE property,
                             ObjectSE val)
        ベースオブジェクトがマップの場合、property 引数で指定されているように、指定されたキーに関連付けられた値を設定しようとします。

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

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

        Map が Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)SE を使用して作成された場合、このメソッドは PropertyNotWritableException をスローする必要があります。残念ながら、これを検出するコレクション API メソッドはありません。ただし、実装はプロトタイプの変更不可能な Map を作成し、その実行時型をクエリして、回避策としてベースオブジェクトの実行時型と一致するかどうかを確認できます。

        次で指定:
        クラス ELResolversetValue 
        パラメーター:
        context - この評価のコンテキスト。
        base - 変更するマップ。型 Map のベースのみがこのリゾルバーによって処理されます。
        property - 指定された値が関連付けられるキー。
        val - 指定されたキーに関連付けられる値。
        例外:
        ClassCastExceptionSE - 指定されたキーまたは値のクラスにより、このマップに保存できない場合。
        NullPointerExceptionSE - コンテキストが null の場合、またはこのマップが null キーまたは値を許可せず、指定されたキーまたは値が null の場合。
        IllegalArgumentExceptionSE - このキーまたは値の何らかの側面により、このマップに保存できない場合。
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
        PropertyNotWritableException - このリゾルバーが読み取り専用モードで構築された場合、または put 操作が基になるマップでサポートされていない場合。
      • isReadOnly

        public boolean isReadOnly​(ELContext context,
                                  ObjectSE base,
                                  ObjectSE property)
        ベースオブジェクトがマップの場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) の呼び出しが常に失敗するかどうかを返します。

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

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

        Map が Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)SE を使用して作成された場合、このメソッドは true を返す必要があります。残念ながら、これを検出するコレクション API メソッドはありません。ただし、実装では、プロトタイプの変更不可能な Map を作成し、その実行時型をクエリして、回避策としてベースオブジェクトの実行時型と一致するかどうかを確認できます。

        次で指定:
        クラス ELResolverisReadOnly 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析するマップ。型 Map のベースのみがこのリゾルバーによって処理されます。
        property - 読み取り専用ステータスを返すためのキー。このリゾルバーでは無視されます。
        戻り値:
        ELContext の propertyResolved プロパティが true に設定されている場合、setValue メソッドの呼び出しが常に失敗する場合は true、そのような呼び出しが成功する可能性がある場合は false。それ以外は未定義。
        例外:
        NullPointerExceptionSE - コンテキストが null の場合
        ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
      • getFeatureDescriptors

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

        返される Iterator には、FeatureDescriptorSE のインスタンスが 0 個以上含まれている必要があります。各 info オブジェクトには、マップ内のキーに関する情報が含まれており、次のように初期化されます。

        • displayName - このキーで toString メソッドを呼び出した場合の戻り値、またはキーが null の場合は "null"
        • name - displayName プロパティと同じです。
        • shortDescription - 空の文字列
        • 専門家 - false
        • 隠された - false
        • 優先 - true
        さらに、返される FeatureDescriptor には、次の名前付き属性を設定する必要があります。
        オーバーライド:
        クラス ELResolvergetFeatureDescriptors 
        パラメーター:
        context - この評価のコンテキスト。
        base - キーが繰り返されるマップ。型 Map のベースのみがこのリゾルバーによって処理されます。
        戻り値:
        それぞれがこのマップのキーを表す 0 個以上(場合によっては無限に多い)の FeatureDescriptor オブジェクトを含む Iterator、またはベースオブジェクトがマップでない場合は null
        関連事項:
        FeatureDescriptorSE
      • getCommonPropertyType

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

        ベースが Map であるとすると、このメソッドは常に Object.class を返します。これは、Map が任意のオブジェクトをキーとして受け入れるためです。

        次で指定:
        クラス ELResolvergetCommonPropertyType 
        パラメーター:
        context - この評価のコンテキスト。
        base - 分析するマップ。型 Map のベースのみがこのリゾルバーによって処理されます。
        戻り値:
        ベースが Map でない場合は null。それ以外の場合は Object.class