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

以下の 2 つのメソッドを使用して、要求パラメーターを受け渡すことができます。
  • param
  • requestScope
param マップには、URL で渡されたパラメーター、 または HTML フォームからの別のページから渡されたパラメーターが含まれています。 ターゲット・ページ内の要求パラメーターを参照するには、
${param.P}
(P は要求パラメーター) を使用します。

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

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

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

requestScope の ParametersValues は、(名前が暗示しているとおり) 永続的ではありません。 このことは、関連レコード・リストがページングをサポートするデータ・テーブルへの requestScope パラメーターについてフィルター処理される場合に、特に問題になる可能性があります。 ページングに関するこの処理では、有効範囲外のパラメーターで実行依頼が開始されます。 この問題に対応するには、 パラメーターを値として使用する非表示の入力フィールドを作成します。 この方法では、フォームが同じページに戻るような複数のフォーム (ポートレットを含む) をもつページの場合には機能しません。 この場合、パラメーター (推奨) あるいは関連レコード・リスト (非推奨) に対して、 他の有効範囲を検討する必要があります。

関連概念
JavaServer Faces
関連タスク
Faces アプリケーションの作成 - 概要
Faces JSP ファイルの作成
関連資料
Faces コンポーネント参照
Faces コンポーネントの属性
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved. (C) Copyright IBM Japan 2005