クラス CompositeELResolver
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
フラグは、設計時メソッド getCommonPropertyType(jakarta.el.ELContext, java.lang.Object)
には使用されません。代わりに、このメソッドのすべての子 ELResolver
から結果が収集され、結合されます。
- 導入:
- Jakarta Server Pages 2.1
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
add
(ELResolver elResolver) 指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。<T> T
convertToType
(ELContext context, ObjectSE obj, ClassSE<T> targetType) オブジェクトを特定の型に変換します。ClassSE<?>
getCommonPropertyType
(ELContext context, ObjectSE base) base
オブジェクトを指定して、このリゾルバーがproperty
引数に対して受け入れる最も一般的な型を返します。ClassSE<?>
指定されたbase
およびproperty
について、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
メソッドへの将来の呼び出しでvalue
パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。すべてのコンポーネントリゾルバーをクエリすることにより、指定されたbase
オブジェクト上の指定されたproperty
オブジェクトを解決しようとします。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
指定されたbase
オブジェクトに指定されたproperty
オブジェクトの値を設定しようとします。
コンストラクターの詳細
CompositeELResolver
public CompositeELResolver()
メソッドの詳細
add
指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。リゾルバーは、追加された順に参照されます。
- パラメーター:
elResolver
- 追加するコンポーネントリゾルバー。- 例外:
NullPointerExceptionSE
- 提供されたリゾルバーがnull
の場合。
getValue
すべてのコンポーネントリゾルバーをクエリすることにより、指定された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
特定の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
指定された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
特定の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
- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getCommonPropertyType
base
オブジェクトを指定して、このリゾルバーがproperty
引数に対して受け入れる最も一般的な型を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。結果は、すべてのコンポーネントリゾルバーをクエリすることによって取得されます。返される
Class
は、各コンポーネントリゾルバーのgetCommonPropertyType
メソッドによって返されるすべてのクラスの共通スーパークラスである最も具象クラスです。null
がリゾルバーによって返された場合、スキップされます。- 次で指定:
- クラス
ELResolver
のgetCommonPropertyType
- パラメーター:
context
- この評価のコンテキスト。base
- 最も一般的なプロパティ型を返す基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull
。- 戻り値:
- この
ELResolver
が指定されたbase
オブジェクトの処理方法を認識していない場合はnull
。それ以外の型のproperty
が受け入れられる場合はObject.class
。それ以外の場合は、指定されたbase
で受け入れられる最も一般的なproperty
型。
convertToType
オブジェクトを特定の型に変換します。変換中にエラーが発生すると、
ELException
がスローされます。- オーバーライド:
- クラス
ELResolver
のconvertToType
- パラメーター:
context
- この評価のコンテキスト。obj
- 変換するオブジェクト。targetType
- 変換のターゲット型。- 戻り値:
targetType
に変換されたオブジェクト- 例外:
ELException
- エラーが発生した場合にスローされます。- 導入:
- Jakarta Expression Language 3.0