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(javax.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(javax.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) の呼び出しが常に失敗するかどうかを判断しようとします。 |
void | setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE value) 指定された base オブジェクトに指定された property オブジェクトの値を設定しようとします。 |
invoke
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
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
に設定されている場合、変数またはプロパティ解決の結果。それ以外は未定義。public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
ELResolver
base
および property
について、ELResolver.setValue(javax.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)
ELResolver
base
オブジェクトに指定された property
オブジェクトの値を設定しようとします。 このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext
オブジェクトの propertyResolved
プロパティを true
に設定する必要があります。このメソッドが呼び出された後、このプロパティが true
でない場合、呼び出し元は値が設定されていないと安全に想定できます。
ELResolver
の setValue
context
- この評価のコンテキスト。base
- プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定する null
。property
- 設定するプロパティまたは変数。value
- プロパティまたは変数に設定する値。public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
ELResolver
base
および property
について、ELResolver.setValue(javax.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)
ELResolver
base
オブジェクトに対して解決できる変数またはプロパティのセットに関する情報を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。base
パラメーターが null
の場合、リゾルバーは解決できるトップレベルの変数のリストを列挙する必要があります。
返される Iterator
には、FeatureDescriptor
SE のゼロ個以上のインスタンスが含まれている必要があり、順序は保証されていません。int
などのプリミティブ型の場合、値 null
を返す必要があります。これは、考えられるすべてのプリミティブ値による無駄な反復を防ぐためです。null
の戻り値は、このリゾルバーが指定された base
オブジェクトを処理しないか、結果が複雑すぎてこのメソッドで表現できないことを示し、代わりに ELResolver.getCommonPropertyType(javax.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
。FeatureDescriptor
SEpublic 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
型。public abstract ObjectSE convertToType(ELContext context, ObjectSE obj, ClassSE<?> targetType)
変換中にエラーが発生すると、ELException
がスローされます。
ELResolver
の convertToType
context
- この評価のコンテキスト。obj
- 変換するオブジェクト。targetType
- 変換のターゲット型。targetType
に変換されたオブジェクト ELException
- エラーが発生した場合にスローされます。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.