クラス 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()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 voidadd(ELResolver elResolver)指定されたリゾルバーをコンポーネントリゾルバーのリストに追加します。<T> TconvertToType(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パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。ObjectSEgetValue(ELContext context, ObjectSE base, ObjectSE property)すべてのコンポーネントリゾルバーをクエリすることにより、指定されたbaseオブジェクト上の指定されたpropertyオブジェクトを解決しようとします。ObjectSEinvoke(ELContext context, ObjectSE base, ObjectSE method, ClassSE<?>[] paramTypes, ObjectSE[] params)すべてのコンポーネントリゾルバーを照会することにより、指定されたbaseオブジェクトで指定されたmethodを解決して呼び出すことを試みます。booleanisReadOnly(ELContext context, ObjectSE base, ObjectSE property)特定のbaseおよびpropertyについて、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを判断しようとします。voidsetValue(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。- 関連事項:
FeatureDescriptorSE
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