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

関連概念
Faces アプリケーション内のデータを使用する作業
関連タスク
リレーショナル・データベースへの接続の作成
Faces JSP ファイルへの関連レコード・リストの追加
Faces JSP ページへの関連レコード・データの追加
Faces JSP ファイルへの Java Bean の追加
Faces JSP ファイルへの Domino Notes およびビューの追加

フィードバック