クラス CompositeELResolver
- java.lang.ObjectSE
-
- jakarta.el.ELResolver
-
- jakarta.el.CompositeELResolver
public class CompositeELResolver extends ELResolver
子ELResolver
の順序付けられた複合リストを維持します。ELContext
に関連付けられているELResolver
は 1 つだけですが、通常、特定の変数またはプロパティの解決のために考慮される複数のリゾルバーがあります。ELResolver
はCompositeELResolver
を使用して結合され、式を評価するための豊富なセマンティクスを定義します。getValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object)
、getType(jakarta.el.ELContext, java.lang.Object, java.lang.Object)
、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
、isReadOnly(jakarta.el.ELContext, java.lang.Object, java.lang.Object)
メソッドの場合、ELResolver
はすべての可能な(ベース、プロパティ)ペアの解決を担当しません。実際、ほとんどのリゾルバーは単一型のbase
のみを処理します。リゾルバーが特定の(ベース、プロパティ)ペアを正常に解決したことを示すには、ELContext
のpropertyResolved
プロパティをtrue
に設定する必要があります。指定されたペアを処理できなかった場合は、このプロパティをそのままにする必要があります。propertyResolved
がfalse
の場合、呼び出し元はメソッドの戻り値を無視する必要があります。CompositeELResolver
はELContext.propertyResolved
フラグをfalse
に初期化し、コンポーネントリゾルバーを反復するための停止条件として使用します。ELContext.propertyResolved
フラグは、設計時メソッドgetFeatureDescriptors(jakarta.el.ELContext, java.lang.Object)
およびgetCommonPropertyType(jakarta.el.ELContext, java.lang.Object)
には使用されません。代わりに、これらのメソッドのすべての子ELResolver
から結果が収集され、結合されます。- 導入:
- Jakarta Server Pages 2.1
- 関連事項:
ELContext
,ELResolver
フィールドサマリー
クラス jakarta.el.ELResolver から継承されたフィールド
RESOLVABLE_AT_DESIGN_TIME, TYPE
コンストラクターのサマリー
コンストラクター コンストラクター 説明 CompositeELResolver()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 void
add(ELResolver elResolver)
指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。<T> T
convertToType(ELContext context, ObjectSE obj, ClassSE<T> targetType)
オブジェクトを特定の型に変換します。ClassSE<?>
getCommonPropertyType(ELContext context, ObjectSE base)
base
オブジェクトを指定して、このリゾルバーがproperty
引数に対して受け入れる最も一般的な型を返します。IteratorSE<FeatureDescriptorSE>
getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 で代替され削除されますClassSE<?>
getType(ELContext context, ObjectSE base, ObjectSE property)
指定されたbase
およびproperty
について、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
メソッドへの将来の呼び出しでvalue
パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。ObjectSE
getValue(ELContext context, ObjectSE base, ObjectSE property)
すべてのコンポーネントリゾルバーをクエリすることにより、指定されたbase
オブジェクト上の指定されたproperty
オブジェクトを解決しようとします。ObjectSE
invoke(ELContext context, ObjectSE base, ObjectSE method, ClassSE<?>[] paramTypes, ObjectSE[] params)
すべてのコンポーネントリゾルバーを照会することにより、指定されたbase
オブジェクトで指定されたmethod
を解決して呼び出すことを試みます。boolean
isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
特定のbase
およびproperty
について、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
の呼び出しが常に失敗するかどうかを判断しようとします。void
setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)
指定されたbase
オブジェクトに指定されたproperty
オブジェクトの値を設定しようとします。
メソッドの詳細
add
public void add(ELResolver elResolver)
指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。リゾルバーは、追加された順に参照されます。
- パラメーター:
elResolver
- 追加するコンポーネントリゾルバー。- 例外:
NullPointerExceptionSE
- 提供されたリゾルバーがnull
の場合。
getValue
public ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
すべてのコンポーネントリゾルバーをクエリすることにより、指定されたbase
オブジェクト上の指定されたproperty
オブジェクトを解決しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContext
オブジェクトのpropertyResolved
プロパティをtrue
に設定する必要があります。このメソッドが呼び出された後、このプロパティがtrue
でない場合、呼び出し元は戻り値を無視する必要があります。まず、提供されている
ELContext
でpropertyResolved
がfalse
に設定されます。次に、このコンポジットの各コンポーネントリゾルバー:
getValue()
メソッドが呼び出され、提供されたcontext
、base
、property
が渡されます。ELContext
のpropertyResolved
フラグがfalse
の場合、反復が続行されます。- そうでない場合、反復は停止し、コンポーネントリゾルバーは考慮されません。
getValue()
によって返される値は、このメソッドによって返されます。
どのコンポーネントリゾルバーもこの操作を実行できなかった場合、値
null
が返され、propertyResolved
フラグはfalse
に設定されたままになります。反復中にコンポーネントリゾルバーによってスローされた例外は、このメソッドの呼び出し元に伝達されます。
- 次で指定:
- クラス
ELResolver
のgetValue
- パラメーター:
context
- この評価のコンテキスト。base
- プロパティ値が返されるベースオブジェクト、またはトップレベル変数を解決するnull
。property
- 解決するプロパティまたは変数。- 戻り値:
ELContext
のpropertyResolved
プロパティがtrue
に設定されている場合、変数またはプロパティ解決の結果。それ以外は未定義。- 例外:
NullPointerExceptionSE
- コンテキストがnull
の場合PropertyNotFoundException
- 指定された(ベース、プロパティ)のペアがこのELResolver
によって処理されましたが、指定された変数またはプロパティが存在しないか、読み取りできない場合。ELException
- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
invoke
public ObjectSE invoke(ELContext context, ObjectSE base, ObjectSE method, ClassSE<?>[] paramTypes, ObjectSE[] params)
すべてのコンポーネントリゾルバーを照会することにより、指定されたbase
オブジェクトで指定されたmethod
を解決して呼び出すことを試みます。このリゾルバーが指定された(ベース、メソッド)ペアを処理する場合、戻る前に、リゾルバーによって
ELContext
オブジェクトのpropertyResolved
プロパティをtrue
に設定する必要があります。このメソッドが呼び出された後、このプロパティがtrue
でない場合、呼び出し元は戻り値を無視する必要があります。まず、提供されている
ELContext
でpropertyResolved
がfalse
に設定されます。次に、このコンポジットの各コンポーネントリゾルバー:
invoke()
メソッドが呼び出され、提供されたcontext
、base
、method
、paramTypes
、params
が渡されます。ELContext
のpropertyResolved
フラグがfalse
の場合、反復が続行されます。- そうでない場合、反復は停止し、コンポーネントリゾルバーは考慮されません。
getValue()
によって返される値は、このメソッドによって返されます。
どのコンポーネントリゾルバーもこの操作を実行できなかった場合、値
.null
が返され、propertyResolved
フラグはfalse
に設定されたままになります。反復中にコンポーネントリゾルバーによってスローされた例外は、このメソッドの呼び出し元に伝達されます。
- オーバーライド:
- クラス
ELResolver
のinvoke
- パラメーター:
context
- この評価のコンテキスト。base
- メソッドを呼び出す Beanmethod
- 呼び出すメソッドの単純な名前。String
に強制変換されます。paramTypes
- メソッドの仮パラメーター型を宣言された順序で識別する Class オブジェクトの配列。メソッドにパラメーターがない場合は、空の配列を使用します。null
にすることができます。その場合、メソッドの仮パラメーターの型は不明であると見なされます。params
- メソッドに渡すパラメーター。パラメーターがない場合はnull
。- 戻り値:
- メソッド呼び出しの結果(メソッドに
void
戻り値の型がある場合はnull
)。 - 導入:
- Jakarta Expression Language 2.2
getType
public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
特定のbase
およびproperty
について、オブジェクトがsetValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
メソッドへの今後の呼び出しでvalue
パラメーターとして渡されるのに受け入れられる最も一般的な型を識別しようとします。結果は、すべてのコンポーネントリゾルバーをクエリすることによって取得されます。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContext
オブジェクトのpropertyResolved
プロパティをtrue
に設定する必要があります。このメソッドが呼び出された後、このプロパティがtrue
でない場合、呼び出し元は戻り値を無視する必要があります。まず、提供されている
ELContext
でpropertyResolved
がfalse
に設定されます。次に、このコンポジットの各コンポーネントリゾルバー:
getType()
メソッドが呼び出され、提供されたcontext
、base
、property
が渡されます。ELContext
のpropertyResolved
フラグがfalse
の場合、反復が続行されます。- そうでない場合、反復は停止し、コンポーネントリゾルバーは考慮されません。
getType()
によって返される値は、このメソッドによって返されます。
どのコンポーネントリゾルバーもこの操作を実行できなかった場合、値
null
が返され、propertyResolved
フラグはfalse
に設定されたままになります。反復中にコンポーネントリゾルバーによってスローされた例外は、このメソッドの呼び出し元に伝達されます。
- 次で指定:
- クラス
ELResolver
のgetType
- パラメーター:
context
- この評価のコンテキスト。base
- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull
。property
- 受け入れ可能な型を返すプロパティまたは変数。- 戻り値:
ELContext
のpropertyResolved
プロパティがtrue
に設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型はnull
でなければなりません。それ以外は未定義- 例外:
NullPointerExceptionSE
- コンテキストがnull
の場合PropertyNotFoundException
- 指定された(ベース、プロパティ)のペアがこのELResolver
によって処理されましたが、指定された変数またはプロパティが存在しないか、読み取りできない場合。ELException
- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
setValue
public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)
指定されたbase
オブジェクトに指定されたproperty
オブジェクトの値を設定しようとします。すべてのコンポーネントリゾルバーは、値を設定するように求められます。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContext
オブジェクトのpropertyResolved
プロパティをtrue
に設定する必要があります。このメソッドが呼び出された後、このプロパティがtrue
でない場合、呼び出し元は値が設定されていないと安全に想定できます。まず、提供されている
ELContext
でpropertyResolved
がfalse
に設定されます。次に、このコンポジットの各コンポーネントリゾルバー:
setValue()
メソッドが呼び出され、提供されたcontext
、base
、property
、value
が渡されます。ELContext
のpropertyResolved
フラグがfalse
の場合、反復が続行されます。- それ以外の場合、反復は停止し、これ以上コンポーネントリゾルバーは考慮されません。
どのコンポーネントリゾルバーもこの操作を実行できなかった場合、
propertyResolved
フラグはfalse
に設定されたままになります。反復中にコンポーネントリゾルバーによってスローされた例外は、このメソッドの呼び出し元に伝達されます。
- 次で指定:
- クラス
ELResolver
のsetValue
- パラメーター:
context
- この評価のコンテキスト。base
- プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定するnull
。property
- 設定するプロパティまたは変数。val
- プロパティまたは変数に設定する値。- 例外:
NullPointerExceptionSE
- コンテキストがnull
の場合PropertyNotFoundException
- 指定された(ベース、プロパティ)ペアがこのELResolver
によって処理されたが、指定された変数またはプロパティが存在しない場合PropertyNotWritableException
- 指定された(ベース、プロパティ)ペアがこのELResolver
で処理されているが、指定された変数またはプロパティが書き込み可能でない場合ELException
- プロパティまたは変数を設定しようとしたときに例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
isReadOnly
public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
特定のbase
およびproperty
について、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
の呼び出しが常に失敗するかどうかを判断しようとします。結果は、すべてのコンポーネントリゾルバーをクエリすることによって取得されます。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContext
オブジェクトのpropertyResolved
プロパティをtrue
に設定する必要があります。このメソッドが呼び出された後、このプロパティがtrue
でない場合、呼び出し元は戻り値を無視する必要があります。まず、提供されている
ELContext
でpropertyResolved
がfalse
に設定されます。次に、このコンポジットの各コンポーネントリゾルバー:
isReadOnly()
メソッドが呼び出され、提供されたcontext
、base
、property
が渡されます。ELContext
のpropertyResolved
フラグがfalse
の場合、反復が続行されます。- そうでない場合、反復は停止し、コンポーネントリゾルバーは考慮されません。
isReadOnly()
によって返される値は、このメソッドによって返されます。
どのコンポーネントリゾルバーもこの操作を実行できなかった場合、値
.false
が返され、propertyResolved
フラグはfalse
に設定されたままになります。反復中にコンポーネントリゾルバーによってスローされた例外は、このメソッドの呼び出し元に伝達されます。
- 次で指定:
- クラス
ELResolver
のisReadOnly
- パラメーター:
context
- この評価のコンテキスト。base
- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull
。property
- 読み取り専用ステータスを返すプロパティまたは変数。- 戻り値:
ELContext
のpropertyResolved
プロパティがtrue
に設定されている場合、プロパティが読み取り専用の場合はtrue
、そうでない場合はfalse
。それ以外は未定義。- 例外:
NullPointerExceptionSE
- コンテキストがnull
の場合PropertyNotFoundException
- 指定された(ベース、プロパティ)ペアがこのELResolver
によって処理されたが、指定された変数またはプロパティが存在しない場合ELException
- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getFeatureDescriptors
@DeprecatedSE(forRemoval=true, since="5.0") public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 で代替され削除されます指定されたbase
オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。結果は、すべてのコンポーネントリゾルバーから収集されます。ELContext
のpropertyResolved
プロパティは、このメソッドには関係ありません。すべてのELResolver
の結果が連結されます。返される
Iterator
は、各コンポーネントリゾルバーのgetFeatureDescriptors
メソッドによって返されるイテレーターによって返されるFeatureDescriptor
オブジェクトのコレクションに対するイテレーターです。null
がリゾルバーによって返された場合、スキップされます。- オーバーライド:
- クラス
ELResolver
のgetFeatureDescriptors
- パラメーター:
context
- この評価のコンテキスト。base
- 有効なプロパティのセットが列挙される基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull
。- 戻り値:
FeatureDescriptor
オブジェクトを 0 個以上(場合によっては無限に多く)含むIterator
、またはこのリゾルバーが与えられたbase
オブジェクトを処理できない場合や、このメソッドで表現するには結果が複雑すぎる場合はnull
。- 関連事項:
FeatureDescriptor
SE
getCommonPropertyType
public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
base
オブジェクトを指定して、このリゾルバーがproperty
引数に対して受け入れる最も一般的な型を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。結果は、すべてのコンポーネントリゾルバーをクエリすることによって取得されます。返される
Class
は、各コンポーネントリゾルバーのgetCommonPropertyType
メソッドによって返されるすべてのクラスの共通スーパークラスである最も具象クラスです。null
がリゾルバーによって返された場合、スキップされます。- 次で指定:
- クラス
ELResolver
のgetCommonPropertyType
- パラメーター:
context
- この評価のコンテキスト。base
- 最も一般的なプロパティ型を返す基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull
。- 戻り値:
- この
ELResolver
が指定されたbase
オブジェクトの処理方法を認識していない場合はnull
。それ以外の型のproperty
が受け入れられる場合はObject.class
。それ以外の場合は、指定されたbase
で受け入れられる最も一般的なproperty
型。
convertToType
public <T> T convertToType(ELContext context, ObjectSE obj, ClassSE<T> targetType)
オブジェクトを特定の型に変換します。変換中にエラーが発生すると、
ELException
がスローされます。- オーバーライド:
- クラス
ELResolver
のconvertToType
- パラメーター:
context
- この評価のコンテキスト。obj
- 変換するオブジェクト。targetType
- 変換のターゲット型。- 戻り値:
targetType
に変換されたオブジェクト- 例外:
ELException
- エラーが発生した場合にスローされます。- 導入:
- Jakarta Expression Language 3.0