public class CompositeELResolver extends ELResolver
ELResolver
の順序付けられた複合リストを維持します。ELContext
に関連付けられている ELResolver
は 1 つだけですが、通常、特定の変数またはプロパティの解決のために考慮される複数のリゾルバーがあります。ELResolver
は CompositeELResolver
を使用して結合され、式を評価するための豊富なセマンティクスを定義します。
getValue(javax.el.ELContext, java.lang.Object, java.lang.Object)
、getType(javax.el.ELContext, java.lang.Object, java.lang.Object)
、setValue(javax.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
、isReadOnly(javax.el.ELContext, java.lang.Object, java.lang.Object)
メソッドの場合、ELResolver
はすべての可能な(ベース、プロパティ)ペアの解決を担当しません。実際、ほとんどのリゾルバーは単一型の base
のみを処理します。リゾルバーが特定の(ベース、プロパティ)ペアを正常に解決したことを示すには、ELContext
の propertyResolved
プロパティを true
に設定する必要があります。指定されたペアを処理できなかった場合は、このプロパティをそのままにする必要があります。propertyResolved
が false
の場合、呼び出し元はメソッドの戻り値を無視する必要があります。
CompositeELResolver
は ELContext.propertyResolved
フラグを false
に初期化し、コンポーネントリゾルバーを反復するための停止条件として使用します。
ELContext.propertyResolved
フラグは、設計時メソッド getFeatureDescriptors(javax.el.ELContext, java.lang.Object)
および getCommonPropertyType(javax.el.ELContext, java.lang.Object)
には使用されません。代わりに、これらのメソッドのすべての子 ELResolver
から結果が収集され、結合されます。
ELContext
, ELResolver
RESOLVABLE_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(javax.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(javax.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, waitSE
public 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(javax.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(javax.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
。FeatureDescriptor
SEpublic 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 © 2019 Eclipse Foundation.
Use is subject to license terms.