JSF ハンドラー・パーツ

EGL JSF ハンドラー・パーツは、ユーザーの Web ページとのランタイム対話を制御するほか、 以下のタスクのいずれかを実行できます。

JSF ハンドラー自体には、変数と、以下のようなロジックが組み込まれます。

JSF ハンドラーの変数には、次の 2 とおりの方法でアクセスします。

JSF ハンドラーのパーツはシンプルにしておきます。パーツには、範囲検査のような単純なデータ妥当性検査が組み込まれる場合がありますが、他のプログラムを呼び出して、複合ビジネス・ロジックを実行してください。 例えば、呼び出し先プログラムでのみ、データベース・アクセスを実行します。

JSF ハンドラーに関連付けられた出力

JSF ハンドラーを保存すると、EGL は以下の場合に限り、JSP ファイルを WebContent¥WEB-INF フォルダーに配置します。
  • JSP ファイル名を指定する JSF ハンドラーの view プロパティーに値を割り当てた
  • WebContent¥WEB-INF フォルダーに、指定した名前の JSP ファイルが入っていない

JSF ハンドラーの生成時に、EGL が JSP ファイルを上書きすることはありません。

ワークベンチ設定で、保存時の自動ビルドを設定している場合、JSF ハンドラーを保存するたびに JSF ハンドラーの生成が行われます。 いずれの場合も、JSF ハンドラーを生成すると、出力は以下のオブジェクトから作成されます。
  • ページ Bean は、データを含み、Web ページの初期化、データ妥当性検査、およびイベント処理サービスを行う Java™ クラスです。ランタイム・イベントを参照するドキュメンテーションでは、JSF ハンドラー という語句はページ Bean を指すために使用されることがあります。
  • <managed-bean> 要素はプロジェクト内の JSF 構成ファイルに配置され、実行時にページ Bean を識別します。
  • JSF アプリケーション構成ファイル内に <navigation-rule> 要素が作成され、 JSF 出力 (JSP ハンドラーの名前) を呼び出し先の JSP ファイルに関連付けます。 『ページ・ナビゲーション』を参照してください。
  • JSP ファイルは、JSP ハンドラーを保存すると生成されます。

JSF ハンドラーが使用するすべてのデータ・テーブルおよびレコードも生成されます。

検証

JSP ベースの JSF タグがデータ変換、検証、またはイベント処理を行う場合、 JSF ランタイムは、ユーザーが Web ページを処理依頼するとすぐに必要な処理を行います。 次の EGL ベースの妥当性検査は、JSF ベースの妥当性検査のように 行われます。
  • 個々の入力フィールドの基本編集 (最小入力長さなど)。
  • 個々のフィールドの入力ベースの編集 (文字、数値)。
  • 個々の入力フィールドの DataTable の編集 (範囲、適合、および不適合)。『DataTable パーツ』を参照してください。
  • 個々の入力フィールドの onValueChange 関数。
EGL ランタイムが前の妥当性検査でエラーを検出している場合、JSF ランタイム・コードが、埋め込まれたエラー・メッセージのある同じ Web ページを再表示します。前の妥当性検査がすべて成功している場合、 次のように EGL バリデーター関数が実行されます。
  1. これらの妥当性検査の一部が失敗した場合でも、 個々の入力フィールドに対してすべてのバリデーター関数が実行されます。
  2. これらのすべてのバリデーター関数が成功した場合、まとめて JSF ハンドラーに対して バリデーター関数が実行されます。

バリデーター関数がエラーを検出した場合、 この関数はコントロールを別の Web ページに転送することもできますが、 デフォルトの振る舞いは、同じ Web ページを再表示することです。

validationOrder フィールド・レベル・プロパティーは、 フィールド固有の EGL バリデーター関数の呼び出し順序を定義します。 このプロパティーは、以前に実行された onValueChange 関数の順序には影響を与えません。

validationOrder プロパティーが指定されない場合、 デフォルトは JSF ハンドラーに定義されたフィールドの順序 (上から下へ) になります。 全部ではなく一部の JSF ハンドラーのフィールドに対して validationOrder が定義されている場合、 最初に、validationOrder プロパティーを持つすべてのフィールドの検証が指定された順序で行われます。 続いて、validationOrder プロパティーを持たないフィールドの検証が JSF ハンドラーのフィールドの順序 (上から下へ) で行われます。

JSF のスコープ

このセクションには、「IBM® Rational® Business Developer with EGL」(http://www.mc-store.com/5087.html) の資料が含まれています。

JSF ランタイムは、3 つのスコープのうち 1 つに EGL JSF ハンドラーを割り当てます。 それぞれのスコープが管理 Bean の存続時間を定義します。スコープは、Scope プロパティー の 3 つの指定可能な値 (request、session、および application) に対応します。この 3 つのスコープは、ユーザーが使用できるだけでなく、一時記憶として使用が可能で、同一のまたは別の EGL JSF ハンドラー内の関数の間でデータを転送することができます。

  • 要求スコープを使用できるのは、JSF ランタイムがユーザーからの要求を受け取ってから、コードが そのユーザーに応答するまでの間の時間です。要求スコープ内の EGL JSF ハンドラーは、ユーザー要求への応答内で特定の順序の状況を提供します。Scope プロパティーの値に関係なく、要求スコープ内に データを保存できます。
  • セッション・スコープは、 JSF ランタイムがユーザーからデータを受信後以降使用することができ、サーバー・セッションが無効になるまで、複数のユーザー・コード による対話の間続きます。サーバー・セッションはいくつかの方法で無効になります。その原因は、例えば、セッション・タイムアウトのため、あるいは EGL JSF ハンドラーが Web アプリケーション・サーバーで再起動 (再初期化) されたため、などです。セッション・スコープの ハンドラーは、一連の相互作用に必要となる順序の番号を保持することがあります。 Scope プロパティー値が session または application の場合、 データをセッション・スコープに保存できます。
  • アプリケーション・スコープは、複数ユーザー・スコープです。これは、任意のユーザーに対して Web アプリケーションが開始される時点から使用でき、アプリケーションが終了するまで続きます。 アプリケーション・スコープの EGL JSF ハンドラーは、次に使用可能な順序の番号を保持することがあります。 Scope プロパティー値が application の場合、アプリケーション・スコープにデータを保存できます。
ライブラリー j2eeLib 内の複数の関数によって、1 つまたは別のスコープで、データを保存、 検索、およびクリアできます。例えば、以下の関数は要求スコープに保存されている データとの対話に使用できます。
  • j2eeLib.setRequestAttr()
  • j2eeLib.getRequestAttr()
  • j2eeLib.clearRequestAttr()

セッション・スコープまたはアプリケーション・スコープに対して等価の関数の名前は、類似しています。例えば、j2eeLib.setSessionAttr() などです。


フィードバック