クラス MapELResolver
- java.lang.ObjectSE
-
- jakarta.el.ELResolver
-
- jakarta.el.MapELResolver
public class MapELResolver extends ELResolver
MapSE のインスタンスのプロパティ解決動作を定義します。このリゾルバーは、型
java.util.Mapのベースオブジェクトを処理します。任意のオブジェクトをプロパティとして受け入れ、そのオブジェクトをマップのキーとして使用します。結果の値は、そのキーに関連付けられているマップ内の値です。このリゾルバーは読み取り専用モードで構築できます。つまり、
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,MapSE
フィールドのサマリー
クラス jakarta.el.ELResolver から継承されたフィールド
RESOLVABLE_AT_DESIGN_TIME, TYPE
コンストラクターの概要
コンストラクター コンストラクター 説明 MapELResolver()新しい読み取り / 書き込みMapELResolverを作成します。MapELResolver(boolean isReadOnly)指定されたパラメーターによって読み取り専用ステータスが決定される新しいMapELResolverを作成します。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 ClassSE<?>getCommonPropertyType(ELContext context, ObjectSE base)ベースオブジェクトがマップの場合、このリゾルバーがproperty引数に対して受け入れる最も一般的な型を返します。IteratorSE<FeatureDescriptorSE>getFeatureDescriptors(ELContext context, ObjectSE base)非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 では代替なしで削除されますClassSE<?>getType(ELContext context, ObjectSE base, ObjectSE property)ベースオブジェクトがマップの場合、このマップの値に対して最も一般的に受け入れられる型を返します。ObjectSEgetValue(ELContext context, ObjectSE base, ObjectSE property)ベースオブジェクトがマップの場合、property引数で指定されているように、指定されたキーに関連付けられた値を返します。booleanisReadOnly(ELContext context, ObjectSE base, ObjectSE property)ベースオブジェクトがマップの場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを返します。voidsetValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)ベースオブジェクトがマップの場合、property引数で指定されているように、指定されたキーに関連付けられた値を設定しようとします。クラス jakarta.el.ELResolver から継承されたメソッド
convertToType, invoke
メソッドの詳細
getType
public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
ベースオブジェクトがマップの場合、このマップの値に対して最も一般的に受け入れられる型を返します。ベースが
Mapの場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。ベースが
Mapであると仮定すると、リゾルバーが読み取り専用モードで構築されていない限り、このメソッドは常にObject.classを返します。読み取り専用モードの場合はnullが返されます。これは、Mapが特定のキーの値として任意のオブジェクトを受け入れるためです。- 次で指定:
- クラス
ELResolverのgetType - パラメーター:
context- この評価のコンテキスト。base- 分析するマップ。型Mapのベースのみがこのリゾルバーによって処理されます。property- 受け入れ可能な型を返すためのキー。このリゾルバーでは無視されます。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型はnullでなければなりません。それ以外は未定義- 例外:
NullPointerExceptionSE- コンテキストがnullの場合ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getValue
public ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
ベースオブジェクトがマップの場合、property引数で指定されているように、指定されたキーに関連付けられた値を返します。キーが見つからなかった場合は、nullが返されます。ベースが
Mapの場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。Map.get(java.lang.Object)SE の場合と同様に、nullが返されるからといって、キーのマッピングがないことを意味するわけではありません。Mapがキーをnullに明示的にマップすることも可能です。- 次で指定:
- クラス
ELResolverのgetValue - パラメーター:
context- この評価のコンテキスト。base- 分析するマップ。型Mapのベースのみがこのリゾルバーによって処理されます。property- 関連する値が返されるキー。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、指定されたキーに関連付けられている値、キーが見つからなかった場合はnull。それ以外の場合は未定義です。- 例外:
ClassCastExceptionSE- キーがこのマップに不適切な型である場合(オプションで、基になるMapによってスローされます)。NullPointerExceptionSE- コンテキストがnullの場合、またはキーが null であり、このマップが null キーを許可しない場合(後者はオプションで基になるMapによってスローされます)。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
setValue
public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE val)
ベースオブジェクトがマップの場合、property引数で指定されているように、指定されたキーに関連付けられた値を設定しようとします。ベースが
Mapの場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は値が設定されていないと安全に想定できます。このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に
PropertyNotWritableExceptionをスローします。MapがCollections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)SE を使用して作成された場合、このメソッドはPropertyNotWritableExceptionをスローする必要があります。残念ながら、これを検出するコレクション API メソッドはありません。ただし、実装はプロトタイプの変更不可能なMapを作成し、その実行時型をクエリして、回避策としてベースオブジェクトの実行時型と一致するかどうかを確認できます。- 次で指定:
- クラス
ELResolverのsetValue - パラメーター:
context- この評価のコンテキスト。base- 変更するマップ。型Mapのベースのみがこのリゾルバーによって処理されます。property- 指定された値が関連付けられるキー。val- 指定されたキーに関連付けられる値。- 例外:
ClassCastExceptionSE- 指定されたキーまたは値のクラスにより、このマップに保存できない場合。NullPointerExceptionSE- コンテキストがnullの場合、またはこのマップがnullキーまたは値を許可せず、指定されたキーまたは値がnullの場合。IllegalArgumentExceptionSE- このキーまたは値の何らかの側面により、このマップに保存できない場合。ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。PropertyNotWritableException- このリゾルバーが読み取り専用モードで構築された場合、または put 操作が基になるマップでサポートされていない場合。
isReadOnly
public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
ベースオブジェクトがマップの場合、setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを返します。ベースが
Mapの場合、戻る前に、このリゾルバーによってELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。このリゾルバーが読み取り専用モードで作成された場合、このメソッドは常に
trueを返します。MapがCollections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)SE を使用して作成された場合、このメソッドはtrueを返す必要があります。残念ながら、これを検出するコレクション API メソッドはありません。ただし、実装では、プロトタイプの変更不可能なMapを作成し、その実行時型をクエリして、回避策としてベースオブジェクトの実行時型と一致するかどうかを確認できます。- 次で指定:
- クラス
ELResolverのisReadOnly - パラメーター:
context- この評価のコンテキスト。base- 分析するマップ。型Mapのベースのみがこのリゾルバーによって処理されます。property- 読み取り専用ステータスを返すためのキー。このリゾルバーでは無視されます。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、setValueメソッドの呼び出しが常に失敗する場合はtrue、そのような呼び出しが成功する可能性がある場合はfalse。それ以外は未定義。- 例外:
NullPointerExceptionSE- コンテキストがnullの場合ELException- プロパティまたは変数の解決の実行中に例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
getFeatureDescriptors
@DeprecatedSE(forRemoval=true, since="5.0") public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このメソッドは、EL 6.0 では代替なしで削除されますベースオブジェクトがマップの場合、Mapで使用可能なキーのセットを含むIteratorを返します。それ以外の場合は、nullを返します。返される
Iteratorには、FeatureDescriptorSE のインスタンスが 0 個以上含まれている必要があります。各 info オブジェクトには、マップ内のキーに関する情報が含まれており、次のように初期化されます。- displayName - このキーで
toStringメソッドを呼び出した場合の戻り値、またはキーがnullの場合は"null"。 - name - displayName プロパティと同じです。
- shortDescription - 空の文字列
- 専門家 -
false - 隠された -
false - 優先 -
true
FeatureDescriptorには、次の名前付き属性を設定する必要があります。ELResolver.TYPE- このキーでgetClass()メソッドを呼び出した場合の戻り値、またはキーがnullの場合はnull。ELResolver.RESOLVABLE_AT_DESIGN_TIME-true
- オーバーライド:
- クラス
ELResolverのgetFeatureDescriptors - パラメーター:
context- この評価のコンテキスト。base- キーが繰り返されるマップ。型Mapのベースのみがこのリゾルバーによって処理されます。- 戻り値:
- それぞれがこのマップのキーを表す 0 個以上(場合によっては無限に多い)の
FeatureDescriptorオブジェクトを含むIterator、またはベースオブジェクトがマップでない場合はnull。 - 関連事項:
FeatureDescriptorSE
- displayName - このキーで
getCommonPropertyType
public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
ベースオブジェクトがマップの場合、このリゾルバーがproperty引数に対して受け入れる最も一般的な型を返します。それ以外の場合は、nullを返します。ベースが
Mapであるとすると、このメソッドは常にObject.classを返します。これは、Mapが任意のオブジェクトをキーとして受け入れるためです。- 次で指定:
- クラス
ELResolverのgetCommonPropertyType - パラメーター:
context- この評価のコンテキスト。base- 分析するマップ。型Mapのベースのみがこのリゾルバーによって処理されます。- 戻り値:
- ベースが
Mapでない場合はnull。それ以外の場合はObject.class。