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 から結果が収集され、結合されます。
ELContext, ELResolverRESOLVABLE_AT_DESIGN_TIME, TYPE| コンストラクターと説明 |
|---|
CompositeELResolver() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | add(ELResolver elResolver) 指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。 |
ObjectSE | convertToType(ELContext context, ObjectSE obj, ClassSE<?> targetType) オブジェクトを特定の型に変換します。 |
ClassSE<?> | getCommonPropertyType(ELContext context, ObjectSE base)base オブジェクトを指定して、このリゾルバーが property 引数に対して受け入れる最も一般的な型を返します。 |
IteratorSE<FeatureDescriptorSE> | getFeatureDescriptors(ELContext context, ObjectSE base) 指定された base オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。 |
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 オブジェクトの値を設定しようとします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void add(ELResolver elResolver)
リゾルバーは、追加された順に参照されます。
elResolver - 追加するコンポーネントリゾルバー。NullPointerExceptionSE - 提供されたリゾルバーが null の場合。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 - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。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)。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 に設定されている場合、最も一般的な受け入れ可能な型。それ以外は未定義。NullPointerExceptionSE - コンテキストが null の場合 PropertyNotFoundException - 指定された(ベース、プロパティ)のペアがこの ELResolver によって処理されましたが、指定された変数またはプロパティが存在しないか、読み取りできない場合。ELException - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。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 - プロパティまたは変数を設定しようとしたときに例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。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 - プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
base オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。結果は、すべてのコンポーネントリゾルバーから収集されます。ELContext の propertyResolved プロパティは、このメソッドには関係ありません。すべての ELResolver の結果が連結されます。
返される Iterator は、各コンポーネントリゾルバーの getFeatureDescriptors メソッドによって返されるイテレーターによって返される FeatureDescriptor オブジェクトのコレクションに対するイテレーターです。null がリゾルバーによって返された場合、スキップされます。
ELResolver の getFeatureDescriptors context - この評価のコンテキスト。base - 有効なプロパティのセットが列挙される基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙する null。FeatureDescriptor オブジェクトを 0 個以上(場合によっては無限に多く)含む Iterator、またはこのリゾルバーが与えられた base オブジェクトを処理できない場合や、このメソッドで表現するには結果が複雑すぎる場合は null。FeatureDescriptorSEpublic 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 型。public ObjectSE convertToType(ELContext context, ObjectSE obj, ClassSE<?> targetType)
変換中にエラーが発生すると、ELException がスローされます。
ELResolver の convertToType context - この評価のコンテキスト。obj - 変換するオブジェクト。targetType - 変換のターゲット型。targetType に変換されたオブジェクト ELException - エラーが発生した場合にスローされます。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.