クラス 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> T
convertToType(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
パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。ObjectSE
getValue(ELContext context, ObjectSE base, ObjectSE property)
指定されたbase
オブジェクトで指定されたproperty
オブジェクトを解決しようとします。boolean
isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
特定のbase
およびproperty
について、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
の呼び出しが常に失敗するかどうかを判断しようとします。void
setValue(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
には、FeatureDescriptor
SE のゼロ個以上のインスタンスが含まれている必要があり、順序は保証されていません。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
。- 関連事項:
FeatureDescriptor
SE
getCommonPropertyType
public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
クラスからコピーされた説明:ELResolver
base
オブジェクトが指定された場合、このリゾルバーが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
- エラーが発生した場合にスローされます。