演習 3.1: 別のページへのリダイレクト
前の EGL チュートリアルでは、パラメーターをハイパーリンクに追加してデータをある Web ページから別の Web ページへ送信する方法を学習しました。この演習では、EGL forward 文を使用してデータをあるページから別のページへ送信する方法について学習します。この文は、ハイパーリンクとほぼ同じように機能しますが、forward 文はページ内ではなく EGL コード内にあるので、転送アクションおよび転送されるパラメーターはユーザーからは見えません。また、forward 文を使用すれば、EGL コード内でいつでもデータを別のページへ転送することができ、有効範囲内の任意の EGL 変数をパラメーターとして使用できるので、より詳細な制御が可能になります。
forward 文を使用するには、以下の 2 つの方法があります。
- forward to "myOtherPage";
- forward 文をこのように使用すると、JSF 構成ファイルで myOtherPage として識別されているページに、制御がリダイレクトされます。このチュートリアルの場合、各ページは、JSF 構成ファイル内で、PageHandler と同じ名前と .jsp 拡張子を除いたページを使用して識別されています。
- forward myVariable1, myVariable2 to "myOtherLogicPart";
- forward 文をこのように使用すると、パラメーター myVariable1 および myVariable2 が myOtherLogicPart に送られます。パラメーターを他のページに転送する場合には、そのページの PageHandler が、それらのパラメーターを受け取るように構成されていることを確認する必要があります。
EGL forward 文について詳しくは、製品ヘルプの「forward」を参照してください。
forward 文を使用する PageHandler の作成
- プロジェクト・エクスプローラー・ビューで、「EGLWeb」プロジェクトをクリックして選択する。
- メニュー・バーから「ファイル」>「新規」>「Faces JSP ファイル」をクリックする。新規 Faces JSP ファイル・ウィザードが開きます。
- 「ファイル名」フィールドに次のファイル名を入力する。
RedirectTest
- 「ページ・テンプレートから作成」チェック・ボックスを選択する。
- 「次へ」をクリックする。
- 「ページ・テンプレート・タイプ」の下で、「ユーザー定義ページ・テンプレート」をクリックする。
- 「サムネール」の下で「A_gray.htpl」テンプレートをクリックする。
- 「終了」をクリックする。新規ファイルがプロジェクトに追加され、そのファイルがエディターで開きます。
- 新規ファイルで、デフォルト・テキストの「Place your page content here.」を削除する。
- 削除したテキストの代わりに、EGL forwarding examples と入力して、Enter キーを押す。
- ページを右クリックして、「ページ・コードの編集」をクリックする。ページ・コード・ファイルが開き、このページの PageHandler が表示されます。
- ページ・コード・ファイル内のすべてのコードを削除して、代わりに以下のコードを入力する。
package pagehandlers;
PageHandler RedirectTest
{view = "RedirectTest.jsp", onPageLoadFunction = onPageLoad}
myIntVariable int
{displayName = "Integer variable:"};
myCharVariable char(100)
{displayName = "Character variable:"};
Function onPageLoad()
End
Function forwardWithParameters()
forward myIntVariable, myCharVariable to "ParameterPage";
end
Function forwardToAllCustomers()
forward to "allcustomers";
end
End
以下は、ここで挿入したコードに関する技術面での注釈です。
- このコードでは、文字変数および整変数の 2 つの変数が作成されます。
- このコードでは、forward 文を含む関数が 2 つ作成されます。1 つは、パラメーターを送信せずにブラウザーを別のページにリダイレクトする関数です。もう 1 つは、この演習で後で作成するページへブラウザーをパラメーターと共にリダイレクトする関数です。
- 最初の forward 文に関するエラーが発生することがあります。そのようなエラーは、ParameterPage PageHandler の onPageLoad() 関数がまだ作成されていないため、発生します。
- ファイルを保存して閉じる。
- RedirectTest.jsp ページに戻る。
- ページ・データ・ビューで「myCharVariable」変数および「myIntVariable」変数を選択して、ページへドラッグする。「挿入のコントロール」ウィンドウが開きます。
- 「挿入のコントロール」ウィンドウで、「既存レコードの更新」をクリックする。
- 「オプション」ボタンをクリックする。「オプション」ウィンドウ
が開きます。
- 「オプション」ウィンドウで、「実行ボタン」チェック・ボックスと「削除ボタン」チェック・ボックスをクリアする。
- 「OK」をクリックする。
- 「終了」をクリックする。フィールドがページに追加されます。
- 新規フィールドの下にブランク行を追加する。
- パレット・ビューの「Faces コンポーネント」ドロワーから、2 つの「コマンド - ボタン (Command - button)」コンポーネントを新規ブランク行へドラッグする。
- いずれかの新規ボタンをクリックして、プロパティー・ビューの「表示オプション 」タブを開く。
- プロパティー・ビューで、「ボタンのラベル」 を「Forward to allcustomers.jsp」に変更する。
- 同様の方法で、もう 1 つのボタンのラベルを「Forward with parameters」に変更する。
- ページ・データ・ビューから、「forwardToAllcustomers()」関数を「Forward to allcustomers.jsp」ボタンへドラッグする。
- ページ・データ・ビューから、「forwardWithParameters()」関数を「Forward with parameters」ボタンへドラッグする。
- ページを保管する。
ページは次のようになります。

forward 文からのパラメーターを受け取るページの作成
- プロジェクト・エクスプローラー・ビューで、「EGLWeb」プロジェクトをクリックして選択する。
- メニュー・バーから「ファイル」>「新規」>「Faces JSP ファイル」をクリックする。新規 Faces JSP ファイル・ウィザードが開きます。
- 「ファイル名」フィールドに次のファイル名を入力する。
ParameterPage
- 「ページ・テンプレートから作成」チェック・ボックスを選択する。
- 「次へ」をクリックする。
- 「ページ・テンプレート・タイプ」の下で、「ユーザー定義ページ・テンプレート」をクリックする。
- 「サムネール」の下で「A_gray.htpl」テンプレートをクリックする。
- 「終了」をクリックする。新規ファイルがプロジェクトに追加され、そのファイルがエディターで開きます。
- 新規ファイルで、デフォルト・テキストの「Place your page content here.」を削除する。
- 削除したテキストの代わりに、Forwarded parameters と入力して、Enter キーを押す。
- ページを右クリックして、「ページ・コードの編集」をクリックする。ページ・コード・ファイルが開きます。
- ページ・コード・ファイル内のすべてのコードを削除して、代わりに以下のコードを入力する。
package pagehandlers;
PageHandler ParameterPage
{view = "ParameterPage.jsp", onPageLoadFunction = onPageLoad}
myIntParameter int;
myCharParameter char(100);
Function onPageLoad(myIntVariable int, myCharVariable char(100))
myIntParameter = myIntVariable;
myCharParameter = myCharVariable;
End
End
以下は、ここで挿入したコードに関する技術面での注釈です。
- onPageLoad 関数は、RedirectTest.jsp ページの forward 文から渡される 2 つのパラメーターを受け取ります。それから、それらの値を、この PageHandler の 2 つの変数に割り当てます。
- ファイルを保存して閉じる。
- ParameterPage.jsp ページに戻る。
- ページ・データ・ビューで「myCharParameter」変数および「myIntParameter」変数を選択して、ページへドラッグする。「挿入のコントロール」ウィンドウが開きます。
- 「コントロールの挿入」ウィンドウで、
「既存レコードの表示 (読み取り専用)」をクリックする。
- 「終了」をクリックする。
- ページを保管する。
ページのテスト
- RedirectTest.jsp ページをサーバーで実行する。
- RedirectTest.jsp ページを Web ブラウザーで開いたら、「Integer variable」フィールドに整数を、「Character variable」フィールドに文字を入力する。
- 「Forward with parameters」をクリックする。
ブラウザーが ParameterPage.jsp ページに転送され、forward 文によって渡された値が表示されます。ページは次のピクチャーのようになり、ページのフィールドに値が表示されます。

- ブラウザーを allcustomers.jsp ページに転送するボタンもテストする。
あるページから別のページへ、またはあるプログラムから別のプログラムへと制御を転送する方法は多数あり、以上の方法はその一例です。セッション変数の有無に応じて別のページに対してユーザーの問い合わせを行う方法については、ヘルプ・トピック「セッション変数に関するブラウザーのテスト」を参照してください。
『演習 3.2: ビルトイン EGL 関数の使用』に進んでください。