インターフェース | 説明 |
---|---|
ELContextListener | ELContext が作成されたときに通知を受信するためのリスナーインターフェース。 |
クラス | 説明 |
---|---|
ArrayELResolver | 配列のプロパティ解決動作を定義します。 |
BeanELResolver | JavaBeans コンポーネントアーキテクチャを使用して、オブジェクトのプロパティ解決動作を定義します。 |
BeanNameELResolver | ユーザーまたはコンテナー管理 Bean を解決するための ELResolver 。 |
BeanNameResolver | Bean を既知の名前で解決します。 |
CompositeELResolver | 子 ELResolver の順序付けられた複合リストを維持します。 |
ELClass | Jakarta Expression Language 式でのクラスのランタイム表現。 |
ELContext | 式の解析および評価のコンテキスト情報。 |
ELContextEvent | ELContext が作成されたことを示すイベント。 |
ELManager | Jakarta Expression Language の解析および評価環境を管理します。 |
ELProcessor | スタンドアロン環境で Jakarta Expression Language を使用するための API を提供します。 |
ELResolver | Jakarta Expression Language 式評価の変数、プロパティ、メソッド呼び出し、型変換解決動作のカスタマイズを有効にします。 |
EvaluationListener | Jakarta Expression Language 式が評価されたときに通知を受け取るためのリスナーインターフェース。 |
Expression | 式のサブクラス ValueExpression および MethodExpression の基本クラス。両方に共通の特性を実装します。 |
ExpressionFactory | Jakarta Expression Language 式を作成および評価するための実装を提供します。 |
FunctionMapper | Jakarta Expression Language 関数名とメソッド間のマップへのインターフェース。 |
ImportHandler | クラス名とパッケージ名のインポートを処理します。 |
LambdaExpression | パラメーター化された ValueExpression をカプセル化します。 |
ListELResolver | List SE のインスタンスのプロパティ解決動作を定義します。 |
MapELResolver | Map SE のインスタンスのプロパティ解決動作を定義します。 |
MethodExpression | オブジェクトのメソッドを参照する Expression 。 |
MethodInfo | MethodExpression が評価したメソッドに関する情報を保持します。 |
ResourceBundleELResolver | ResourceBundle SE のインスタンスのプロパティ解決動作を定義します。 |
StandardELContext | スタンドアロン環境での使用に適した標準の ELContext。 |
StaticFieldELResolver | 静的フィールド、列挙定数、静的メソッドを解決するための ELResolver 。 |
TypeConverter | カスタム型変換を行うための ELResolver を作成するための便利なクラス。 |
ValueExpression | 値を取得または設定できる Expression 。 |
ValueReference | これは、ベースモデルオブジェクトとそのプロパティの 1 つをカプセル化します。 |
VariableMapper | Jakarta Expression Language 変数とそれらが関連付けられている Jakarta Expression Language 式の間のマップへのインターフェース。 |
例外 | 説明 |
---|---|
ELException | 式の評価中に発生する可能性のある例外条件を表します。 |
MethodNotFoundException | MethodExpression の評価中にメソッドが見つからなかった場合にスローされます。 |
PropertyNotFoundException | ValueExpression または MethodExpression の評価中にプロパティが見つからなかった場合にスローされます。 |
PropertyNotWritableException | ValueExpression に値を設定しているときにプロパティに書き込めなかった場合にスローされます。 |
Jakarta Expression Language は、もともと Web アプリケーション開発者の特定のニーズを満たすために設計された単純な言語です。それは、Web コンテナーの内部および外部での一般的な使用を目的とした独自の仕様に進化しました。
このパッケージには、Jakarta Expression Language エンジンへのプログラムによるアクセスを記述および定義するクラスとインターフェースが含まれています。API は、次のように論理的に分割されています。
Jakarta Expression Language の重要なゴールは、さまざまな環境で使用できるようにすることです。使用されている環境の特定の要件に適応するのに十分な柔軟性を提供する必要があります。
クラス ELContext
は、Jakarta Expression Language をそれが使用されている特定の環境にリンクするものです。これは、式を作成または評価するためのすべての関連コンテキストを指定するためのメカニズムを提供します。
Jakarta Expression Language が Web コンテナーで使用される場合、ELContext
オブジェクトの作成は、基盤となるテクノロジーによって制御されます。例: Jakarta Server Pages では、JspContext.getELContext()
ファクトリメソッドが使用されます。スタンドアロン環境では、デフォルトの StandardELContext
が提供されます。
一部のテクノロジーは、ELContextListener
を追加する機能を提供します。これにより、アプリケーションとフレームワークは、独自に作成したコンテキストオブジェクトを新しく作成された ELContext
に確実にアタッチできます。
式言語の中核となるのは、式言語で定義された文法に従って解析される式の概念です。
Jakarta Expression Language で定義されている式には、 値式とメソッド式の 2 種類があります。"${customer.name}"
などの ValueExpression
は、 右辺値(モデルオブジェクト customer
のプロパティ name
に関連付けられた値を返す)または左辺値(モデルオブジェクト customer
のプロパティ name
の値を設定)として使用できます。
"${handler.process}"
などの MethodExpression
を使用すると、特定のモデルオブジェクト(handler
)でメソッド(process
)を呼び出すことができます。
バージョン 2.2 以降では、どちらの型の Jakarta Expression Language 式も、メソッド呼び出しへの引数が式で指定されている ${trader.buy("JAVA")}
などのメソッド呼び出しを表すことができます。
すべての式クラスは基本クラス Expression
を継承し、直列化可能にして、強制的に equals()
および hashCode()
を実装します。さらに、実際に式を評価するこれらの式クラスの各メソッドは、式の評価に必要なコンテキストを提供するクラス ELContext
のパラメーターを受け取ります。
式は、ExpressionFactory
クラスを介して作成されます。ファクトリでは 2 つの作成方法を提供しています。Jakarta Expression Language でサポートされている式の型ごとに 1 つ。
式を作成するには、ELContext
、式を表す文字列、予期される型(ValueExpression
)または署名(MethodExpression
)を指定する必要があります。ELContext
は、式の解析に必要なコンテキストを提供します。具体的には、式が Jakarta Expression Language 関数(たとえば ${fn:toUpperCase(customer.name)}
)または Jakarta Expression Language 変数を使用する場合、Jakarta Expression Language 関数と Jakarta Expression Language 変数が適切にマップされるように、FunctionMapper
および VariableMapper
オブジェクトが ELContext
内で使用可能である必要があります。
式の作成と評価は、2 つの別々のステップで行われます。式の評価時に、ELContext
は、モーダルオブジェクトのプロパティとメソッドの解決をサポートするために必要なコンテキストを提供します。
遅延式は、作成されましたがすぐには評価されない式です。Jakarta Faces リクエスト処理のライフサイクルでは、Jakarta Expression Language 式は通常、ツリー構築フェーズで作成され、レンダリングフレーズで評価されます。
ValueExpression
にパラメーターを追加すると、遅延式の機能がさらに強化されます。LambdaExpression
はそのような構造をカプセル化します。LambdaExpression
は、評価時に実際のパラメーターを指定することで呼び出すことができます。これは、コレクションのオペレーターのサポートにおいて重要なロールを果たします。
ELContext に EvaluationListener
を登録することにより、ユーザーは Jakarta Expression Language 式の評価中に通知を受け取ることができます。通知をトリガーするイベントは 3 つあります。
ELResolver
基本クラスを通じて、Jakarta Expression Language は、モデルオブジェクト参照、およびこれらのオブジェクトのプロパティとメソッド呼び出しを解決するためのプラグ可能なメカニズムを備えています。
Jakarta Expression Language API は、配列(ArrayELResolver
)、JavaBeans(BeanELResolver
)、List
s(ListELResolver
)、Map
s(MapELResolver
)、および ResourceBundle
s(ResourceBundleELResolver
)を含む一般的なデータ型の ELResolver
サポートプロパティ解決の実装を提供します。
ELResolver
でメソッド getFeatureDescriptors
を呼び出すことにより、ツールは解決可能なモデルオブジェクトとその解決可能なプロパティに関する詳細情報を簡単に取得できます。このメソッドは、型 java.beans.FeatureDescriptor
のオブジェクトを公開し、最上位のモデルオブジェクトとそのプロパティに関する重要なすべての情報を提供します。
Jakarta Expression Language 式が関数(たとえば、${fn:toUpperCase(customer.name)}
)を使用する場合、FunctionMapper
オブジェクトも ELContext
内で指定する必要があります。FunctionMapper
は、${prefix:name()}
スタイルの関数を、指定された関数を実行できる静的メソッドにマップするロールを果たします。
FunctionMapper
が Jakarta Expression Language に機能を追加するための柔軟なメカニズムを提供するように、VariableMapper
は Jakarta Expression Language 変数の概念をサポートするための柔軟なメカニズムを提供します。
Jakarta Expression Language 変数は、ELResolver
で解決できるモデルオブジェクトを直接参照しません。代わりに、Jakarta Expression Language 式を参照します。その Jakarta Expression Language 式の評価により、Jakarta Expression Language 変数にその値が与えられます。
例: 次のコードスニペット
<h:inputText value="#{handler.customer.name}"/>
handler
は、Jakarta Expression Language Resolver で解決できるモデルオブジェクトを指します。ただし、この他の例では:
<c:forEach var="item" items="#{model.list}"> <h:inputText value="#{item.name}"/> </c:forEach>
item
はモデルオブジェクトを直接参照しないため、Jakarta Expression Language 変数です。代わりに、別の Jakarta Expression Language 式、つまり、Jakarta Expression Language 式 #{model.list}
によって参照されるコレクション内の特定のアイテムを参照します。${model.list}
に 3 つの要素があるとすると、これは、<h:inputText>
の呼び出しごとに、item
に関する次の情報を VariableMapper
に保持する必要があることを意味します。
最初の呼び出し:item
は${model.list}
の最初の要素にマップされます
2 番目の呼び出し:item
は${model.list}
の 2 番目の要素にマップされます
3 番目の呼び出し:item
は${model.list}
の 3 番目の要素にマップされます
VariableMapper
は、Jakarta Expression Language 変数をその値を取得する Jakarta Expression Language 式にマッピングできるようにするために必要なメカニズムを提供します。
Jakarta Expression Language 4.0 には、スタンドアロン環境で Jakarta Expression Language を使用するための API が含まれています。
ELProcessor
は、式を直接評価するための単純な API を提供します。また、関数の定義、変数の設定、Bean のローカルでの定義も簡単になります。
ELManager
は、Jakarta Expression Language の解析および評価環境を管理するための下位レベルの API を提供します。デフォルトの ELContext StandardELContext
が含まれています。
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.