クラス ELResolver
- 既知の直属サブクラス
ArrayELResolver、BeanELResolver、BeanNameELResolver、CompositeELResolver、ImplicitObjectELResolver、ImportELResolver、ListELResolver、MapELResolver、NotFoundELResolver、OptionalELResolver、RecordELResolver、ResourceBundleELResolver、ScopedAttributeELResolver、StaticFieldELResolver、TypeConverter
式の評価中に、ELContext に関連付けられた ELResolver が参照され、式の最初の変数の初期解決が行われます。また、. または [] オペレーターが検出されたときにも参照されます。
例: Jakarta Expression Language 式 ${employee.lastName} で、ELResolver は employee が参照するオブジェクトと、そのオブジェクトの lastName プロパティを取得することの意味を決定します。
このクラスのほとんどのメソッドは、base および property パラメーターを受け入れます。可変解決の場合(employee が ${employee.lastName} で何を参照するかを決定するなど)、base パラメーターは null になり、property パラメーターは常に型 String になります。この場合、property が String ではない場合、ELResolver の動作は未定義です。
プロパティ解決の場合、base パラメーターはベースオブジェクトを識別し、property オブジェクトはそのベースのプロパティを識別します。例: ${employee.lastName} 式では、base は employee の変数解決の結果であり、property は文字列 "lastName" です。式 ${y[x]} で、base は y の可変解決の結果であり、property は x の可変解決の結果です。
メソッド呼び出し解決の場合、base パラメーターはベースオブジェクトを識別し、method パラメーターはそのベースのメソッドを識別します。メソッドがオーバーロードされている場合、 paramTypes パラメーターをオプションで使用してメソッドを識別できます。params パラメーターは、メソッド呼び出しのパラメーターであり、paramTypes パラメーターが指定されていないときにオーバーロードされたメソッドを解決するためにも使用できます。
型変換解決の場合、obj パラメーターはソースオブジェクトを識別し、targetType パラメーターはソースから変換先のターゲット型を識別します。
ELContext に関連付けられているのは 1 つの ELResolver だけですが、通常、特定の変数またはプロパティの解決のために考慮される複数のリゾルバーがあります。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 の場合、呼び出し元はメソッドの戻り値を無視する必要があります。
同様に、convertToType(jakarta.el.ELContext, java.lang.Object, java.lang.Class<T>) メソッドの場合、ELResolver は propertyResolved を true に設定して、オブジェクトがターゲット型への変換を処理することを示す必要があります。
getCommonPropertyType(jakarta.el.ELContext, java.lang.Object) メソッドは主に設計時ツールのサポート用に設計されていますが、実行時の呼び出しも処理する必要があります。Beans.isDesignTime() メソッドを使用すると、リゾルバーが設計時または実行時に参照されているかどうかを判断できます。
- 導入:
- Jakarta Server Pages 2.1
- 関連事項:
コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明<T> TconvertToType(ELContext context, ObjectSE obj, ClassSE<T> targetType) オブジェクトを特定の型に変換します。abstract ClassSE<?>getCommonPropertyType(ELContext context, ObjectSE base) baseオブジェクトを指定して、このリゾルバーがproperty引数に対して受け入れる最も一般的な型を返します。abstract ClassSE<?>指定されたbaseおよびpropertyについて、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)メソッドへの将来の呼び出しでvalueパラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。abstract ObjectSE指定されたbaseオブジェクトで指定されたpropertyオブジェクトを解決しようとします。invoke(ELContext context, ObjectSE base, ObjectSE method, ClassSE<?>[] paramTypes, ObjectSE[] params) 指定されたbaseオブジェクトで指定されたmethodを解決して呼び出すことを試みます。abstract booleanisReadOnly(ELContext context, ObjectSE base, ObjectSE property) 特定のbaseおよびpropertyについて、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを判断しようとします。abstract void指定されたbaseオブジェクトに指定されたpropertyオブジェクトの値を設定しようとします。
コンストラクターの詳細
ELResolver
public ELResolver()
メソッドの詳細
getValue
指定されたbaseオブジェクトで指定されたpropertyオブジェクトを解決しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。- パラメーター:
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でない場合、呼び出し元は戻り値を無視する必要があります。ELResolver を継承する既存のクラスが機能し続けることができるように、null を返すデフォルトの実装が提供されています。
- パラメーター:
context- この評価のコンテキスト。base- メソッドを呼び出す Beanmethod- 呼び出すメソッドの単純な名前。Stringに強制変換されます。paramTypes- メソッドの仮パラメーター型を宣言された順序で識別する Class オブジェクトの配列。メソッドにパラメーターがない場合は、空の配列を使用します。nullにすることができます。その場合、メソッドの仮パラメーターの型は不明であると見なされます。params- メソッドに渡すパラメーター。パラメーターがない場合はnull。- 戻り値:
- メソッド呼び出しの結果(メソッドに
void戻り値の型がある場合はnull)。 - 例外:
MethodNotFoundException- 適切な方法が見つからない場合。ELException- (ベース、メソッド)解決の実行中に例外がスローされた場合スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。スローされた例外がInvocationTargetExceptionの場合、そのcauseを抽出し、それをELExceptionコンストラクターに渡します。- 導入:
- 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でない場合、呼び出し元は戻り値を無視する必要があります。これは、常に
getValue().getClass()と同じではありません。例:ArrayELResolverの場合、getTypeメソッドは配列のエレメント型を返します。これは、指定された配列エレメントに現在ある実際のエレメントの型のスーパークラスである可能性があります。リゾルバーまたはプロパティが読み取り専用の場合、このメソッドは
nullを返す必要があります。- パラメーター:
context- この評価のコンテキスト。base- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull。property- 受け入れ可能な型を返すプロパティまたは変数。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型はnullでなければなりません。それ以外は未定義- 例外:
PropertyNotFoundException- 指定された(ベース、プロパティ)のペアがこのELResolverによって処理されましたが、指定された変数またはプロパティが存在しないか、読み取りできない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
setValue
指定されたbaseオブジェクトに指定されたpropertyオブジェクトの値を設定しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は値が設定されていないと安全に想定できます。- パラメーター:
context- この評価のコンテキスト。base- プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定するnull。property- 設定するプロパティまたは変数。value- プロパティまたは変数に設定する値。- 例外:
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でない場合、呼び出し元は戻り値を無視する必要があります。- パラメーター:
context- この評価のコンテキスト。base- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull。property- 読み取り専用ステータスを返すプロパティまたは変数。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、プロパティが読み取り専用の場合はtrue、そうでない場合はfalse。それ以外は未定義。- 例外:
NullPointerExceptionSE- コンテキストがnullの場合PropertyNotFoundException- 指定された(ベース、プロパティ)ペアがこのELResolverによって処理されたが、指定された変数またはプロパティが存在しない場合ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getCommonPropertyType
baseオブジェクトが指定された場合、このリゾルバーがproperty引数に対して受け入れる最も一般的な型を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。これは、ツールが自動補完を支援し、リゾルバーが配列への整数インデックスなどのプリミティブ値を受け入れることを表現する方法も提供します。例:
ArrayELResolverはintをpropertyとして受け入れるため、戻り値はInteger.classになります。- パラメーター:
context- この評価のコンテキスト。base- 最も一般的なプロパティ型を返す基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull。- 戻り値:
- この
ELResolverが指定されたbaseオブジェクトの処理方法を認識していない場合はnull。それ以外の型のpropertyが受け入れられる場合はObject.class。それ以外の場合は、指定されたbaseで受け入れられる最も一般的なproperty型。
convertToType
オブジェクトを特定の型に変換します。変換中にエラーが発生すると、
ELExceptionがスローされます。- パラメーター:
context- この評価のコンテキスト。obj- 変換するオブジェクト。targetType- 変換のターゲット型。- 戻り値:
targetTypeに変換されたオブジェクト- 例外:
ELException- エラーが発生した場合にスローされます。