クラス BeanELResolver
- java.lang.ObjectSE
-
- jakarta.el.ELResolver
-
- jakarta.el.BeanELResolver
public class BeanELResolver extends ELResolver
JavaBeans コンポーネントアーキテクチャを使用して、オブジェクトのプロパティ解決動作を定義します。このリゾルバーは、ベースが
null
でない限り、任意の型のベースオブジェクトを処理します。プロパティまたはメソッドとして任意のオブジェクトを受け入れ、文字列に変換します。プロパティの解決では、プロパティ文字列を使用して、ベースオブジェクトの JavaBeans 準拠のプロパティを検索します。この値には、JavaBeans getter および setter を使用してアクセスします。
メソッド解決の場合、メソッド文字列は Bean 内のメソッドの名前です。パラメーター型はオプションでメソッドを識別するために指定できます。パラメーター型が指定されていない場合、パラメーターオブジェクトはメソッド解決で使用されます。
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
- 関連事項:
CompositeELResolver
,ELResolver
フィールドサマリー
クラス jakarta.el.ELResolver から継承されたフィールド
RESOLVABLE_AT_DESIGN_TIME, TYPE
コンストラクターのサマリー
コンストラクター コンストラクター 説明 BeanELResolver()
新しい読み取り / 書き込みBeanELResolver
を作成します。BeanELResolver(boolean isReadOnly)
指定されたパラメーターによって読み取り専用ステータスが決定される新しいBeanELResolver
を作成します。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 ClassSE<?>
getCommonPropertyType(ELContext context, ObjectSE base)
基本オブジェクトがnull
ではない場合、このリゾルバーがproperty
引数として受け入れる最も一般的な型を返します。IteratorSE<FeatureDescriptorSE>
getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 では代替なしで削除されますClassSE<?>
getType(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトがnull
ではない場合、この Bean プロパティに設定できる最も一般的な許容可能な型を返します。ObjectSE
getValue(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトがnull
でない場合、この Bean の指定されたプロパティの現在の値を返します。ObjectSE
invoke(ELContext context, ObjectSE base, ObjectSE methodName, ClassSE<?>[] paramTypes, ObjectSE[] params)
基本オブジェクトがnull
でない場合は、この Bean の指定されたパラメーターを使用して、メソッドを呼び出します。boolean
isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトがnull
でない場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
の呼び出しが常に失敗するかどうかを返します。void
setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)
ベースオブジェクトがnull
ではない場合、この Bean に指定されたプロパティの値を設定しようとします。クラス jakarta.el.ELResolver から継承されたメソッド
convertToType
メソッドの詳細
getType
public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトが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
public ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトが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
public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)
ベースオブジェクトが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
public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
基本オブジェクトが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
- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getFeatureDescriptors
@DeprecatedSE(forRemoval=true, since="5.0") public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 では代替なしで削除されます基本オブジェクトがnull
ではない場合、指定されたオブジェクトで使用可能な JavaBeans プロパティのセットを含むIterator
を返します。それ以外の場合は、null
を返します。返される
Iterator
には、ゼロ個以上のFeatureDescriptor
SE のインスタンスが含まれている必要があります。各 info オブジェクトには、BeanInfo.getPropertyDescriptors
メソッドを呼び出して取得した、Bean のプロパティに関する情報が含まれています。FeatureDescriptor
は、PropertyDescriptor
と同じフィールドを使用して初期化され、必須の名前付き属性 "type
" および "resolvableAtDesignTime
" が次のように設定されます。ELResolver.TYPE
-PropertyDescriptor.getPropertyType()
からのプロパティのランタイム型。ELResolver.RESOLVABLE_AT_DESIGN_TIME
-true
.
- オーバーライド:
- クラス
ELResolver
のgetFeatureDescriptors
- パラメーター:
context
- この評価のコンテキスト。base
- 分析する Bean。- 戻り値:
- ゼロ個以上の
FeatureDescriptor
オブジェクトを含むIterator
。それぞれがこの Bean のプロパティを表す。base
オブジェクトがnull
の場合はnull
。 - 関連事項:
FeatureDescriptor
SE
getCommonPropertyType
public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
基本オブジェクトがnull
ではない場合、このリゾルバーがproperty
引数として受け入れる最も一般的な型を返します。それ以外の場合は、null
を返します。ベースが
null
ではないと仮定すると、このメソッドは常にObject.class
を返します。これは、すべてのオブジェクトがキーとして受け入れられ、文字列に強制変換されるためです。- 次で指定:
- クラス
ELResolver
のgetCommonPropertyType
- パラメーター:
context
- この評価のコンテキスト。base
- 分析する Bean。- 戻り値:
- ベースが
null
の場合はnull
。それ以外の場合はObject.class
。