クラス BeanELResolver
java.beans.* パッケージ (java.desktop モジュールの一部) が利用可能な場合は、JRE によって提供される JavaBeans 実装が使用されます。java.beans.* パッケージが利用できない場合は、getter/setter サポートのみを提供する組み込みのスタンドアロン実装が使用されます (他のものはすべて java.beans.* のクラスを必要とするため)。
このリゾルバーは、ベースが null でない限り、任意の型のベースオブジェクトを処理します。プロパティまたはメソッドとして任意のオブジェクトを受け入れ、文字列に変換します。
プロパティの解決では、プロパティ文字列を使用して、ベースオブジェクトの JavaBeans 準拠のプロパティを検索します。この値には、JavaBeans getter および setter を使用してアクセスします。
メソッド解決の場合、メソッド文字列は Bean 内のメソッドの名前です。パラメーター型はオプションでメソッドを識別するために指定できます。パラメーター型が指定されていない場合、パラメーターオブジェクトはメソッド解決で使用されます。
JavaBeans 仕様は、インターフェース上で定義されるデフォルトのメソッド実装の導入より前から存在しています。プロパティ getter、プロパティ setter およびメソッドを検索するための JavaBeans 仕様要件に加えて、このリゾルバーはデフォルトのメソッドも考慮し、結果に含めます。
JavaBeans 仕様は、モジュールの導入より前に制定されました。プロパティ getter、プロパティ setter、およびメソッドを検索するための JavaBeans 仕様要件に加えて、このリゾルバーはモジュールの可視性も考慮します。
このリゾルバーは読み取り専用モードで構築できます。つまり、isReadOnly は常に true を返し、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) は常に PropertyNotWritableException をスローします。
ELResolver は CompositeELResolver を使用して組み合わされ、式を評価するための豊富なセマンティクスを定義します。詳細については、ELResolver の javadoc を参照してください。
このリゾルバーはあらゆる型の基本オブジェクトを処理するため、複合リゾルバーの終わり近くに配置する必要があります。それ以外の場合は、プロパティを解決した後、後続のリゾルバーも同様にテストできるかどうかをテストする前に、プロパティを解決したと主張します。
- 導入:
- Jakarta Server Pages 2.1
- 関連事項:
コンストラクターの概要
コンストラクターコンストラクター説明新しい読み取り / 書き込みBeanELResolverを作成します。BeanELResolver(boolean isReadOnly) 指定されたパラメーターによって読み取り専用ステータスが決定される新しいBeanELResolverを作成します。方法の概要
修飾子と型メソッド説明ClassSE<?>getCommonPropertyType(ELContext context, ObjectSE base) 基本オブジェクトがnullではない場合、このリゾルバーがproperty引数として受け入れる最も一般的な型を返します。ClassSE<?>基本オブジェクトがnullではない場合、この Bean プロパティに設定できる最も一般的な許容可能な型を返します。基本オブジェクトがnullでない場合、この Bean の指定されたプロパティの現在の値を返します。invoke(ELContext context, ObjectSE base, ObjectSE methodName, ClassSE<?>[] paramTypes, ObjectSE[] params) 基本オブジェクトがnullでない場合は、この Bean の指定されたパラメーターを使用して、メソッドを呼び出します。booleanisReadOnly(ELContext context, ObjectSE base, ObjectSE property) 基本オブジェクトがnullでない場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを返します。voidベースオブジェクトがnullではない場合、この Bean に指定されたプロパティの値を設定しようとします。クラス jakarta.el.ELResolver から継承されたメソッド
convertToType
コンストラクターの詳細
BeanELResolver
public BeanELResolver()新しい読み取り / 書き込みBeanELResolverを作成します。BeanELResolver
public BeanELResolver(boolean isReadOnly) 指定されたパラメーターによって読み取り専用ステータスが決定される新しいBeanELResolverを作成します。- パラメーター:
isReadOnly- このリゾルバーが Bean を変更できない場合はtrue。それ以外の場合はfalse。
メソッドの詳細
getType
基本オブジェクトがnullではない場合、この Bean プロパティに設定できる最も一般的な許容可能な型を返します。ベースが
nullではない場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。提供されたプロパティは、最初に
Stringに強制されます。このプロパティにBeanInfoPropertyがあり、その取得中にエラーがなく、プロパティもリゾルバーも読み取り専用でない場合は、propertyDescriptorのpropertyTypeが返されます。プロパティは解決されているが、プロパティまたはリゾルバーのいずれかが読み取り専用である場合は、nullが返されます。それ以外の場合は、PropertyNotFoundExceptionがスローされます。- 次で指定:
- クラス
ELResolverのgetType - パラメーター:
context- この評価のコンテキスト。base- 分析する Bean。property- 分析するプロパティの名前。Stringに強制変換されます。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型はnullでなければなりません。それ以外は未定義- 例外:
NullPointerExceptionSE- コンテキストがnullの場合PropertyNotFoundException-baseがnullでなく、指定されたプロパティが存在しないか、読み取れない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getValue
基本オブジェクトがnullでない場合、この Bean の指定されたプロパティの現在の値を返します。ベースが
nullではない場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。指定されたプロパティ名は、まず
Stringに強制変換されます。プロパティが JavaBeans 仕様に従ってベースオブジェクトの読み取り可能なプロパティである場合、getter 呼び出しの結果を返します。getter が例外をスローすると、呼び出し元に伝搬されます。プロパティが見つからない、または読み込めない場合は、PropertyNotFoundExceptionがスローされます。- 次で指定:
- クラス
ELResolverのgetValue - パラメーター:
context- この評価のコンテキスト。base- プロパティを取得する Bean。property- 取得するプロパティの名前。Stringに強制変換されます。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、指定されたプロパティの値。それ以外の場合、未定義です。- 例外:
NullPointerExceptionSE- コンテキストがnullの場合。PropertyNotFoundException-baseがnullでなく、指定されたプロパティが存在しないか、読み取れない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
setValue
ベースオブジェクトがnullではない場合、この Bean に指定されたプロパティの値を設定しようとします。ベースが
nullではない場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は値が設定されていないと安全に想定できます。このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に
PropertyNotWritableExceptionをスローします。指定されたプロパティ名は、まず
Stringに強制変換されます。property がbaseの書き込み可能なプロパティである場合(JavaBeans 仕様に従って)、setter メソッドが呼び出されます(valueを渡す)。プロパティは存在するが setter がない場合、PropertyNotFoundExceptionがスローされます。プロパティが存在しない場合、PropertyNotFoundExceptionがスローされます。- 次で指定:
- クラス
ELResolverのsetValue - パラメーター:
context- この評価のコンテキスト。base- プロパティを設定する Bean。property- 設定するプロパティの名前。Stringに強制変換されます。val- 指定されたキーに関連付けられる値。- 例外:
NullPointerExceptionSE- コンテキストがnullの場合。PropertyNotFoundException-baseがnullではなく、指定されたプロパティが存在しない場合。PropertyNotWritableException- このリゾルバーが読み取り専用モードで作成された場合、またはプロパティの setter がない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
invoke
public ObjectSE invoke(ELContext context, ObjectSE base, ObjectSE methodName, ClassSE<?>[] paramTypes, ObjectSE[] params) 基本オブジェクトがnullでない場合は、この Bean の指定されたパラメーターを使用して、メソッドを呼び出します。メソッドからの戻り値が返されます。ベースが
nullではない場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。提供されたメソッドオブジェクトは、まず
Stringに強制変換されます。次に、Bean 内のメソッドが検査され、呼び出し用に 1 つを選択しようとします。適切なメソッドが見つからない場合は、MethodNotFoundExceptionがスローされます。指定された paramTypes がnullでない場合は、指定された名前とパラメーター型を持つメソッドを選択します。それ以外の場合は、同じ数のパラメーターを持つ指定された名前のメソッドを選択します。そのようなメソッドが複数ある場合、メソッドの選択プロセスは未定義です。それ以外の場合は、可変数の引数を取る指定された名前のメソッドを選択します。オーバーロードされたメソッドの解決は、仕様の将来のバージョンで明確にされる可能性があることに注意してください。提供されたパラメーターは、メソッドの対応するパラメーター型に強制変換され、メソッドが呼び出されます。- オーバーライド:
- クラス
ELResolverのinvoke - パラメーター:
context- この評価のコンテキスト。base- メソッドを呼び出す BeanmethodName- 呼び出すメソッドの単純な名前。Stringに強制変換されます。method が "<init>" または "<clinit>" の場合、MethodNotFoundException がスローされます。paramTypes- メソッドの仮パラメーター型を宣言された順序で識別する Class オブジェクトの配列。メソッドにパラメーターがない場合は、空の配列を使用します。nullにすることができます。その場合、メソッドの仮パラメーターの型は不明であると見なされます。params- メソッドに渡すパラメーター。パラメーターがない場合はnull。- 戻り値:
- メソッド呼び出しの結果(メソッドに
void戻り値の型がある場合はnull)。 - 例外:
MethodNotFoundException- 適切な方法が見つからない場合。ELException- (ベース、メソッド)解決の実行中に例外がスローされた場合スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。スローされた例外がInvocationTargetExceptionの場合、そのcauseを抽出し、それをELExceptionコンストラクターに渡します。- 導入:
- Jakarta Expression Language 2.2
isReadOnly
基本オブジェクトがnullでない場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを返します。ベースが
nullではない場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は値が設定されていないと安全に想定できます。このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に
trueを返します。指定されたプロパティ名は、まず
Stringに強制変換されます。property がbaseの書き込み可能なプロパティである場合、falseが返されます。プロパティが見つかったが書き込み不可の場合、trueが返されます。プロパティが見つからない場合、PropertyNotFoundExceptionがスローされます。- 次で指定:
- クラス
ELResolverのisReadOnly - パラメーター:
context- この評価のコンテキスト。base- 分析する Bean。property- 分析するプロパティの名前。Stringに強制変換されます。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、setValueメソッドの呼び出しが常に失敗する場合はtrue、そのような呼び出しが成功する可能性がある場合はfalse。それ以外は未定義。- 例外:
NullPointerExceptionSE- コンテキストがnullの場合PropertyNotFoundException-baseがnullではなく、指定されたプロパティが存在しない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getCommonPropertyType
基本オブジェクトがnullではない場合、このリゾルバーがproperty引数として受け入れる最も一般的な型を返します。それ以外の場合は、nullを返します。ベースが
nullではないと仮定すると、このメソッドは常にObject.classを返します。これは、すべてのオブジェクトがキーとして受け入れられ、文字列に強制変換されるためです。- 次で指定:
- クラス
ELResolverのgetCommonPropertyType - パラメーター:
context- この評価のコンテキスト。base- 分析する Bean。- 戻り値:
- ベースが
nullの場合はnull。それ以外の場合はObject.class。