クラス TypeConverter
- java.lang.ObjectSE
-
- jakarta.el.ELResolver
-
- jakarta.el.TypeConverter
public abstract class TypeConverter extends ELResolver
カスタム型変換を行うための ELResolver を作成するための便利なクラス。例: 文字列を MyDate のインスタンスに変換するには、次のように記述できます。
ELProcessor elp = new ELProcessor(); elp.getELManager().addELResolver(new TypeConverter() { Object convertToType(ELContext context, Object obj, Class<?> type) { if ((obj instanceof String) && type == MyDate.class) { context.setPropertyResolved(obj, type); return (obj == null)? null: new MyDate(obj.toString()); } return null; } };- 導入:
- Jakarta Expression Language 3.0
フィールドのサマリー
クラス jakarta.el.ELResolver から継承されたフィールド
RESOLVABLE_AT_DESIGN_TIME, TYPE
コンストラクターの概要
コンストラクター コンストラクター 説明 TypeConverter()
方法の概要
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 abstract <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 要素は、将来のバージョンで削除される可能性があります。ClassSE<?>getType(ELContext context, ObjectSE base, ObjectSE property)指定されたbaseおよびpropertyについて、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)メソッドへの将来の呼び出しでvalueパラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。ObjectSEgetValue(ELContext context, ObjectSE base, ObjectSE property)指定されたbaseオブジェクトで指定されたpropertyオブジェクトを解決しようとします。booleanisReadOnly(ELContext context, ObjectSE base, ObjectSE property)特定のbaseおよびpropertyについて、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを判断しようとします。voidsetValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE value)指定されたbaseオブジェクトに指定されたpropertyオブジェクトの値を設定しようとします。クラス jakarta.el.ELResolver から継承されたメソッド
invoke
メソッドの詳細
getValue
public ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
クラスからコピーされた説明:ELResolver指定されたbaseオブジェクトで指定されたpropertyオブジェクトを解決しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。- 次で指定:
- クラス
ELResolverのgetValue - パラメーター:
context- この評価のコンテキスト。base- プロパティ値が返されるベースオブジェクト、またはトップレベル変数を解決するnull。property- 解決するプロパティまたは変数。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、変数またはプロパティ解決の結果。それ以外は未定義。
getType
public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
クラスからコピーされた説明:ELResolver指定されたbaseおよびpropertyについて、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)メソッドへの将来の呼び出しでvalueパラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。これは、常に
getValue().getClass()と同じではありません。例:ArrayELResolverの場合、getTypeメソッドは配列のエレメント型を返します。これは、指定された配列エレメントに現在ある実際のエレメントの型のスーパークラスである可能性があります。リゾルバーまたはプロパティが読み取り専用の場合、このメソッドは
nullを返す必要があります。- 次で指定:
- クラス
ELResolverのgetType - パラメーター:
context- この評価のコンテキスト。base- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull。property- 受け入れ可能な型を返すプロパティまたは変数。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定された場合、プロパティまたはリゾルバーが読み取り専用の場合、最も一般的に受け入れられる型はnullでなければなりません。それ以外は未定義
setValue
public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE value)
クラスからコピーされた説明:ELResolver指定されたbaseオブジェクトに指定されたpropertyオブジェクトの値を設定しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は値が設定されていないと安全に想定できます。- 次で指定:
- クラス
ELResolverのsetValue - パラメーター:
context- この評価のコンテキスト。base- プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定するnull。property- 設定するプロパティまたは変数。value- プロパティまたは変数に設定する値。
isReadOnly
public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
クラスからコピーされた説明:ELResolver特定のbaseおよびpropertyについて、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)の呼び出しが常に失敗するかどうかを判断しようとします。このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって
ELContextオブジェクトのpropertyResolvedプロパティをtrueに設定する必要があります。このメソッドが呼び出された後、このプロパティがtrueでない場合、呼び出し元は戻り値を無視する必要があります。- 次で指定:
- クラス
ELResolverのisReadOnly - パラメーター:
context- この評価のコンテキスト。base- プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析するnull。property- 読み取り専用ステータスを返すプロパティまたは変数。- 戻り値:
ELContextのpropertyResolvedプロパティがtrueに設定されている場合、プロパティが読み取り専用の場合はtrue、そうでない場合はfalse。それ以外は未定義。
getFeatureDescriptors
@DeprecatedSE(forRemoval=true, since="5.0") public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。クラスからコピーされた説明:ELResolver指定されたbaseオブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。baseパラメーターがnullの場合、リゾルバーは解決できるトップレベルの変数のリストを列挙する必要があります。返される
Iteratorには、FeatureDescriptorSE のゼロ個以上のインスタンスが含まれている必要があり、順序は保証されていません。intなどのプリミティブ型の場合、値nullを返す必要があります。これは、考えられるすべてのプリミティブ値による無駄な反復を防ぐためです。nullの戻り値は、このリゾルバーが指定されたbaseオブジェクトを処理しないか、結果が複雑すぎてこのメソッドで表現できないことを示し、代わりにELResolver.getCommonPropertyType(jakarta.el.ELContext, java.lang.Object)メソッドを使用する必要があります。各
FeatureDescriptorには、単一の変数またはプロパティに関する情報が含まれます。標準プロパティに加えて、FeatureDescriptorには(setValueメソッドで設定された)2 つの名前付き属性が必要です。ELResolver.TYPE- この名前付き属性の値は、java.lang.Classのインスタンスであり、変数またはプロパティのランタイム型を指定する必要があります。ELResolver.RESOLVABLE_AT_DESIGN_TIME- この名前付き属性の値はjava.lang.Booleanのインスタンスである必要があり、設計時にこのプロパティを解決しようとして安全かどうかを示します。たとえば、ELResolverが実行時にのみ利用可能なリソースにアクセスする必要があり、許容可能なシミュレーション値を提供できない場合、設計時に解決を試みるのは安全ではない可能性があります。
呼び出し側は、返された
Iteratorが非常に大きい、または無限に大きいプロパティのセットを繰り返し処理する可能性があることを認識しておく必要があります。呼び出し元は、無限ループに陥らないように注意する必要があります。これは「ベストエフォート」リストです。すべての
ELResolverが完全に正確な結果を返すわけではありませんが、エラーを引き起こすことなく、設計時と実行時の両方で(つまり、Beans.isDesignTime()がtrueを返すかどうかにかかわらず)すべて呼び出し可能でなければなりません。ELContextのpropertyResolvedプロパティは、このメソッドには関係ありません。複合リゾルバーの場合、すべてのELResolverの結果が連結されます。ELResolverのデフォルトの実装はnullを返します。サブクラスは、このメソッドをオーバーライドしたい場合があります。- オーバーライド:
- クラス
ELResolverのgetFeatureDescriptors - パラメーター:
context- この評価のコンテキスト。base- 有効なプロパティのセットが列挙される基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull。- 戻り値:
FeatureDescriptorオブジェクトを 0 個以上(場合によっては無限に多く)含むIterator、またはこのリゾルバーが与えられたbaseオブジェクトを処理できない場合や、このメソッドで表現するには結果が複雑すぎる場合はnull。- 関連事項:
FeatureDescriptorSE
getCommonPropertyType
public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
クラスからコピーされた説明:ELResolverbaseオブジェクトが指定された場合、このリゾルバーがproperty引数に対して受け入れる最も一般的な型を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。これは、ツールが自動補完を支援し、リゾルバーが配列への整数インデックスなどのプリミティブ値を受け入れることを表現する方法も提供します。例:
ArrayELResolverはintをpropertyとして受け入れるため、戻り値はInteger.classになります。- 次で指定:
- クラス
ELResolverのgetCommonPropertyType - パラメーター:
context- この評価のコンテキスト。base- 最も一般的なプロパティ型を返す基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙するnull。- 戻り値:
- この
ELResolverが指定されたbaseオブジェクトの処理方法を認識していない場合はnull。それ以外の型のpropertyが受け入れられる場合はObject.class。それ以外の場合は、指定されたbaseで受け入れられる最も一般的なproperty型。
convertToType
public abstract <T> T convertToType(ELContext context, ObjectSE obj, ClassSE<T> targetType)
オブジェクトを特定の型に変換します。変換中にエラーが発生すると、
ELExceptionがスローされます。- オーバーライド:
- クラス
ELResolverのconvertToType - パラメーター:
context- この評価のコンテキスト。obj- 変換するオブジェクト。targetType- 変換のターゲット型。- 戻り値:
targetTypeに変換されたオブジェクト- 例外:
ELException- エラーが発生した場合にスローされます。