PageHandler

EGL PageHandler は、ページ・コード の 1 つの例です。これはユーザーの Web ページとのランタイム相互作用を制御し、以下のいずれのタスクでも実行できます。

最も簡単な方法は、Page Designer で JSP ファイルをカスタマイズして PageHandler を作成する方法です。詳しくは、『EGL の Page Designer サポート』を参照してください。

PageHandler そのものには、変数と、以下のようなロジックが組み込まれます。

PageHandler の変数は、次の 2 通りの方法でアクセスされます。

pageHandler パーツはシンプルにする必要があります。パーツには、範囲検査のような単純なデータ妥当性検査が組み込まれる場合がありますが、他のプログラムを呼び出して、複合ビジネス・ロジックを実行することをお勧めします。例えば、データベース・アクセスは、呼び出し先プログラムに対して予約される必要があります。

PageHandler に関連した出力

PageHandler を保管すると、EGL は JSP ファイルをプロジェクト・フォルダー WebContent¥WEB-INF に配置します。ただし、次の場合に限られます。
  • JSP ファイル名を指定する PageHandler の view プロパティーに値を割り当ててある
  • フォルダー WebContent¥WEB-INF に、指定した名前の JSP ファイルが入っていない

EGL は JSP ファイルを上書きしません。

ワークベンチ設定で、保管時の自動ビルドを設定している場合、PageHandler を保管するたびに PageHandler の生成が行われます。いずれの場合も、PageHandler を生成すると、出力は以下のオブジェクトから構成されます。
  • ページ Bean は、データを含み、Web ページの初期化、データ妥当性検査、およびイベント処理サービスを行う Java™ クラスです。
  • <managed-bean> エレメントは、プロジェクト内の JSF 構成ファイルに配置され、実行時にページ Bean を識別します。
  • JSF アプリケーション構成ファイル中に、<navigation-rule> エレメントが作成され、JSF 出力 (PageHandler の名前) を呼び出し先の JSP ファイルに関連付けます。
  • PageHandler を保管した時点と同じ状態での JSP ファイル。

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

検証

JSP ベースの JSF タグがデータ変換、検証、またはイベント処理を行う場合、JSF ランタイムは、ユーザーが Web ページを処理依頼するとすぐに必要な処理を行います。エラーが検出された場合、JSF ランタイムは、PageHandler に制御を渡さずに、ページを再表示します。ただし、PageHandler が制御を受け取ると、PageHandler は一連の EGL ベースの検証を行います。

EGL ベースの検証は、PageHandler を宣言するときに以下の詳細を指定すると行われます。
  • 個々の入力フィールドのエレメントの編集 (最小入力長さなど)。
  • 個々のフィールドの入力ベースの編集 (文字、数値)。
  • DataTable パーツ』で説明しているような、個々の入力フィールドの DataTable の編集 (範囲、一致の有効、および一致の無効)。
  • 個々の入力フィールドの編集機能。
  • PageHandler の編集機能全体。
PageHandler は、ユーザーが値を変更した項目についてのみ、以下の順序で編集を監視します。
  1. すべての基本的な入力ベースの編集 (一部が失敗した場合でも)
  2. 前の編集が成功した場合、すべてのテーブルの編集 (一部が失敗した場合でも)
  3. 前の編集が成功した場合、すべてのフィールド編集機能 (一部が失敗した場合でも)
  4. 前の編集がすべて成功した場合、pageHandler 編集機能

ページ項目プロパティー validationOrder は、個々の入力が編集され、フィールド・バリデーター関数が呼び出される順序を定義します。

validationOrder プロパティーが指定されない場合、デフォルトは、PageHandler に定義された項目の順序 (上から下) になります。PageHandler の項目の一部で (すべてではなく) validationOrder が指定されている場合、validationOrder プロパティーによる全項目の検証が指定順で最初に行われます。続いて、validationOrder プロパティーを使用しない項目の検証が、PageHandler の項目順 (上から下) で行われます。

ランタイム・シナリオ

このセクションでは、ユーザーと Web アプリケーション・サーバーとの実行時の対話についての技術的概要を示します。

ユーザーが、PageHandler によってサポートされる JSP を呼び出すと、以下のステップが実行されます。
  1. Web アプリケーション・サーバーは、以下のように環境を初期化します。
    1. セッション・オブジェクトを構成して、ユーザーがアクセスするアプリケーションで複数の対話にわたってデータを保存します。
    2. 要求オブジェクトを構成して、ユーザーの現在の対話のデータを保存します。
    3. JSP を呼び出します。
  2. JSP は、以下のように一連の JSF タグを処理して、Web ページを構成します。
    1. PageHandler のインスタンスの作成、ユーザー指定の引数による onPageLoad 関数 (存在する場合)の呼び出し、および要求オブジェクトへの PageHandler の配置を行います。
    2. Web ページに組み込むために、要求オブジェクトおよびセッション・オブジェクトに保管されているデータにアクセスします。
    注: PageHandler パーツには、onPageLoadFunction と呼ばれるプロパティーがあります。これは、JSP の開始時に呼び出される PageHandler 関数を識別するものです。この関数は、渡されたユーザー提供の任意の引数を自動的に検索します。また、他のコードを呼び出すことや、追加のデータを Web アプリケーション・サーバーの要求またはセッション・オブジェクトに配置することができます。ただし、この関数は、他のページに制御を転送したり、ページをユーザーに最初に表示するときにエラー・メッセージを表示することはできません。
  3. JSP はユーザーに Web ページを処理依頼し、Web アプリケーション・サーバーは、セッション・オブジェクトおよび JSP はそのままで、応答オブジェクトを破棄します。
スクリーン内のフィールドにあるユーザー提供のデータが HTML <FORM> タグと関連付けられており、書式を処理依頼する場合は、以下のステップが実行されます。
  1. Web アプリケーション・サーバーは、以下のように環境を再初期化します。
    1. 要求オブジェクトを構成します。
    2. 処理依頼した書式の受信データを検証するため、ページ Bean に配置します。
    3. JSP を再度呼び出します。
  2. JSP は、以下のように一連の JSF タグを処理して、受信データをページ Bean に格納します。
  3. ランタイム PageHandler は、以下のようにデータを検証します。
    1. pageHandler データ宣言の指定に従って、比較的初歩的な編集 (最小入力長さなど) を行います。
    2. pageHandler データ宣言の指定に従って、項目に固有の任意の検証機能を呼び出します。
    3. 別のフィールドの内容を基にして、単一のフィールドを少なくとも部分的に検証する場合、必要に応じて pageHandler バリデーター機能を呼び出します。

    (検証の詳細については、前のセクションを参照してください。)

  4. エラーが発生した場合、EGL ランタイムがエラーを JSF キューに入れ、JSP は Web ページを組み込みメッセージとともに再表示します。エラーが発生しなかった場合の結果は、以下のようになります。
    1. ページ Bean に保管されたデータは、レコード Bean に書き込まれる
    2. 以降の処理は、ユーザーがクリックしたボタンまたはハイパーリンクに関連付けられている JSF タグで識別されるイベント・ハンドラーによって決定される

イベント・ハンドラーは、ランタイムの JSF ベースの構成ファイル内のマッピングを識別する JSF ラベルに処理を送ることができます。次にマッピングは、呼び出すオブジェクトが JSP (通常は、EGL PageHandler に関連付けられている JSP)、またはサーブレットのどれであるかを、識別します。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.