クラス ELProcessor
- java.lang.ObjectSE
-
- jakarta.el.ELProcessor
public class ELProcessor extends ObjectSE
スタンドアロン環境で Jakarta Expression Language を使用するための API を提供します。このクラスは、直接でシンプルなインターフェースを提供します
- Jakarta Expression Language 式の評価。
- Bean への値の割り当て、または Bean プロパティの設定。
ValueExpression
を Jakarta Expression Language 変数に設定します。- 静的メソッドを Jakarta Expression Language 関数として定義します。
- オブジェクトインスタンスを Jakarta Expression Language 名として定義します。
この API は、Jakarta Expression Language 2.2 の API に代わるものではありません。Jakarta Expression Language 環境を維持するコンテナーは、この API を使用せずに引き続き維持できます。
カスタム
ELResolver
の追加など、Jakarta Expression Language 環境を操作したい Jakarta Expression Language ユーザーには、ELManager
を使用できます。スコープとライフサイクル
Jakarta Expression Language 環境の状態を維持するため、
ELProcessor
はスレッドセーフではありません。最も単純なケースでは、Jakarta Expression Language 式の評価の前後にインスタンスを作成および破棄できます。より一般的な使用箇所は、セッションにELProcessor
のインスタンスを使用して、ユーザーがそのセッションの Jakarta Expression Language 評価環境を構成できるようにすることです。式の自動ブラケット
クラスで使用される Jakarta Expression Language 式の文字列に関するメモ。メソッド
getValue(java.lang.String, java.lang.Class<T>)
、setValue(java.lang.String, java.lang.Object)
、setVariable(java.lang.String, java.lang.String)
で許可されている文字列は、非複合式、つまり ${...} または #{...} 形式の式のみに制限されています。また、これらのメソッドで ${ または #{ および } を含む式文字列を括弧する必要はありません(実際には許可されていません)。これらは自動的にブラケットされます。これにより、機能が失われることなく、視覚的なクラスターが削減されます(連結演算子の追加により)。サンプル
次のコードスニペットは、ELProcessor を使用して Bean を定義し、そのプロパティを評価する方法を示しています。ELProcessor elp = new ELProcessor(); elp.defineBean("employee", new Employee("Charlie Brown")); String name = elp.eval("employee.name");
- 導入:
- Jakarta Expression Language 3.0
コンストラクターのサマリー
コンストラクター コンストラクター 説明 ELProcessor()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
defineBean(StringSE name, ObjectSE bean)
ローカル Bean リポジトリで Bean を定義し、同じ名前の他の Bean を非表示にします。void
defineFunction(StringSE prefix, StringSE function, MethodSE method)
ローカル関数マッパーで Jakarta Expression Language 関数を定義します。void
defineFunction(StringSE prefix, StringSE function, StringSE className, StringSE method)
ローカル関数マッパーで Jakarta Expression Language 関数を定義します。<T> T
eval(StringSE expression)
Jakarta Expression Language 式を評価します。ELManager
getELManager()
Jakarta Expression Language 処理に使用される ELManager を返します。<T> T
getValue(StringSE expression, ClassSE<T> expectedType)
Jakarta Expression Language 式を評価し、結果を指定された型に強制変換します。void
setValue(StringSE expression, ObjectSE value)
新しい値で式を設定します。void
setVariable(StringSE var, StringSE expression)
Jakarta Expression Language 式を Jakarta Expression Language 変数に割り当てます。
メソッドの詳細
getELManager
public ELManager getELManager()
Jakarta Expression Language 処理に使用される ELManager を返します。- 戻り値:
- Jakarta Expression Language 処理に使用される ELManager。
eval
public <T> T eval(StringSE expression)
Jakarta Expression Language 式を評価します。- パラメーター:
expression
- 評価される Jakarta Expression Language 式。- 戻り値:
- 式評価の結果。
getValue
public <T> T getValue(StringSE expression, ClassSE<T> expectedType)
Jakarta Expression Language 式を評価し、結果を指定された型に強制変換します。- パラメーター:
expression
- 評価される Jakarta Expression Language 式。expectedType
- 結果の評価が強制される型を指定します。- 戻り値:
- 式評価の結果。
setValue
public void setValue(StringSE expression, ObjectSE value)
新しい値で式を設定します。最後のプロパティ解決までターゲット式が評価され、結果の(ベース、プロパティ)ペアが指定された値に設定されます。- パラメーター:
expression
- ターゲット式value
- 設定する新しい値。- 例外:
PropertyNotFoundException
- 指定された変数またはプロパティが存在しないか、読み込めないために、プロパティの解決の 1 つが失敗した場合。PropertyNotWritableException
- 指定された変数またはプロパティが書き込み可能ではないために、最終的な変数またはプロパティの解決が失敗した場合。ELException
- プロパティまたは変数を設定しようとしたときに例外がスローされた場合。スローされた例外は、可能であれば、この例外の原因プロパティとして含める必要があります。
setVariable
public void setVariable(StringSE var, StringSE expression)
Jakarta Expression Language 式を Jakarta Expression Language 変数に割り当てます。式は解析されますが評価されません。解析された式は、ローカル変数マップの Jakarta Expression Language 変数にマップされます。以前に同じ変数に割り当てられた式は置き換えられます。式がnull
の場合、変数は削除されます。- パラメーター:
var
- 変数の名前。expression
- 変数に割り当てられる Jakarta Expression Language 式。
defineFunction
public void defineFunction(StringSE prefix, StringSE function, StringSE className, StringSE method) throws ClassNotFoundExceptionSE, NoSuchMethodExceptionSE
ローカル関数マッパーで Jakarta Expression Language 関数を定義します。- パラメーター:
prefix
- 関数の名前空間。名前空間がない場合は ""。function
- 関数の名前。空("")の場合、メソッド名が関数名として使用されます。className
- 関数を実装する完全な Java クラス名。method
- 関数を実装する静的メソッドの名前(括弧なしで指定)またはシグニチャー(Java 言語仕様など)。名前( "sum" など)が指定されている場合、クラスで最初に宣言された、その名前に一致するメソッドが選択されます。シグネチャー(「int sum(int、int)」など)が指定されている場合は、シグネチャーを持つ宣言されたメソッドが選択されます。- 例外:
NullPointerExceptionSE
- 引数のいずれかが null の場合。ClassNotFoundExceptionSE
- 指定されたクラスが存在しない場合。NoSuchMethodExceptionSE
- メソッド(署名ありまたはなし)がクラスの宣言されたメソッドでない場合、メソッドの署名が有効でない場合、メソッドが静的メソッドでない場合
defineFunction
public void defineFunction(StringSE prefix, StringSE function, MethodSE method) throws NoSuchMethodExceptionSE
ローカル関数マッパーで Jakarta Expression Language 関数を定義します。- パラメーター:
prefix
- 関数の名前空間。名前空間がない場合は ""。function
- 関数の名前。空("")の場合、メソッド名が関数名として使用されます。method
- 関数を実装するメソッドのjava.lang.reflect.Method
インスタンス。- 例外:
NullPointerExceptionSE
- 引数のいずれかが null の場合。NoSuchMethodExceptionSE
- メソッドが静的メソッドでない場合