JSP ファイル間でのパラメーターの引き渡し

以下の 2 つの方法で要求パラメーターを渡すことができます。
  • パラメーター
  • requestScope
パラメーター・マップは URL 内で渡されるパラメーター、または HTML フォームの別のページから渡されるパラメーターを含んでいます。ターゲット・ページ内にある要求パラメーターを参照するには以下を実行してください。
${param.P}
ここで、P はパラメーターです。

パラメーター・マップは読み取り専用なので、UIInput タイプのコンポーネントの値として使用した場合、JavaServer Faces ライフ・サイクルの updateModel フェーズは失敗します。結果として、 アクションが実行されないためにフォームが崩れたようになります。これは既知の問題です。 したがって、パラメーター・マップは出力コンポーネントのみに使用する必要があります。この問題に対処する方法の 1 つは、 Faces JSP ページのページ・コード・ファイル内に変数を定義することです。次に、その変数の Getter と Setter を生成します。この Getter メソッドでは、(変数が null の場合) resolveExpression("#{param.xyz}) に初期化します。次に、入力コンポーネントを作成し、それをご使用のページのプロパティーにバインドします。

要求範囲パラメーターは URL には表示されません。このパラメーターを渡すには、 「コマンド - ボタン」または「コマンド - ハイパーリンク」を発信側のページに作成します。クイック編集ビューでは、以下のコードを使用して、要求範囲にパラメーターを設定します。
requestScope.put("P", "some value");

#{requestScope.P} の値を通して、ターゲット・ページを参照することができます。 要求範囲は 入出力コンポーネントの両方で使用できます。

requestScope の ParametersValues は (名前が示すように) 永続的ではありません。特に関連レコード・リストが requestScope パラメーターでフィルターに掛けられて、ページングをサポートしているデータ・テーブルに振り分けられた場合、これは問題を起こす可能性があります。ページングの動作により、パラメーターが範囲外になる実行が開始されます。この問題に対処するには、パラメーターを値として使用する非表示の入力フィールドを作成します。この方法は、 フォームが元の同じページに戻る、複数のフォーム (ポートレットを含む) を持つページには使用できません。この場合、パラメーター (推奨) または関連レコード・リスト (非推奨) 用に別々の範囲を検討します。

関連概念
JavaServer Faces
関連タスク
Faces アプリケーションの作成 : 概要
Faces JSP の作成
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005