public abstract class TypeConverter extends 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;
}
};
RESOLVABLE_AT_DESIGN_TIME, TYPE| コンストラクターと説明 |
|---|
TypeConverter() |
| 修飾子と型 | メソッドと説明 |
|---|---|
abstract ObjectSE | convertToType(ELContext context, ObjectSE obj, ClassSE<?> targetType) オブジェクトを特定の型に変換します。 |
ClassSE<?> | getCommonPropertyType(ELContext context, ObjectSE base)base オブジェクトを指定して、このリゾルバーが property 引数に対して受け入れる最も一般的な型を返します。 |
IteratorSE<FeatureDescriptorSE> | getFeatureDescriptors(ELContext context, ObjectSE base) 指定された base オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。 |
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 オブジェクトの値を設定しようとします。 |
invokecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
ELResolverbase オブジェクトで指定された property オブジェクトを解決しようとします。 このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。
ELResolver の getValue context - この評価のコンテキスト。base - プロパティ値が返されるベースオブジェクト、またはトップレベル変数を解決する null。property - 解決するプロパティまたは変数。ELContext の propertyResolved プロパティが true に設定されている場合、変数またはプロパティ解決の結果。それ以外は未定義。public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
ELResolverbase および property について、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) メソッドへの将来の呼び出しで value パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。 このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。
これは、常に getValue().getClass() と同じではありません。例: ArrayELResolver の場合、getType メソッドは配列のエレメント型を返します。これは、指定された配列エレメントに現在ある実際のエレメントの型のスーパークラスである可能性があります。
ELResolver の getType context - この評価のコンテキスト。base - プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析する null。property - 受け入れ可能な型を返すプロパティまたは変数。ELContext の propertyResolved プロパティが true に設定されている場合、最も一般的な受け入れ可能な型。それ以外は未定義。public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE value)
ELResolverbase オブジェクトに指定された property オブジェクトの値を設定しようとします。 このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は値が設定されていないと安全に想定できます。
ELResolver の setValue context - この評価のコンテキスト。base - プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定する null。property - 設定するプロパティまたは変数。value - プロパティまたは変数に設定する値。public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
ELResolverbase および 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。それ以外は未定義。public IteratorSE<FeatureDescriptorSE> getFeatureDescriptors(ELContext context, ObjectSE base)
ELResolverbase オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。この方法の 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 の getFeatureDescriptors context - この評価のコンテキスト。base - 有効なプロパティのセットが列挙される基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙する null。FeatureDescriptor オブジェクトを 0 個以上(場合によっては無限に多く)含む Iterator、またはこのリゾルバーが与えられた base オブジェクトを処理できない場合や、このメソッドで表現するには結果が複雑すぎる場合は null。FeatureDescriptorSEpublic 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 型。public abstract ObjectSE convertToType(ELContext context, ObjectSE obj, ClassSE<?> targetType)
変換中にエラーが発生すると、ELException がスローされます。
ELResolver の convertToType context - この評価のコンテキスト。obj - 変換するオブジェクト。targetType - 変換のターゲット型。targetType に変換されたオブジェクト ELException - エラーが発生した場合にスローされます。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.