7.3. ページパラメータ
Faces 要求 (JSF フォーム送信) は「アクション」 (メソッドバインディング) と「パラメータ」 (入力値バインディング) の両方をカプセル化します。 ページアクションにもパラメータが必要な場合があります。
Faces 以外 (GET) の要求はブックマーク可能なため、ページパラメータはヒューマンリーダブルな要求パラメータとして引き渡されます。
ページパラメータはアクションメソッドを指定してもしなくても使用できます。
7.3.1. 要求パラメータのモデルへのマッピング
Seam により名前付き要求パラメータをモデルオブジェクトの属性にマッピングさせる値バインディングを提供することができます。
<pages> <page view-id="/hello.jsp" action="#{helloWorld.sayHello}"> <param name="firstName" value="#{person.firstName}"/> <param name="lastName" value="#{person.lastName}"/> </page> </pages>
<param>
宣言は JSF 入力の値バインディングと同様に双方向性です。
- ビュー ID に対する Faces 以外 (GET) の要求が発生すると、 Seam は適切なタイプ変換を実行した後、 名前付きパラメータの値をそのモデルオブジェクトに設定します。
- 任意の
<s:link>
や<s:button>
は透過的に要求パラメータを含みます。 パラメータ値は、 レンダリングフェーズの間に (<s:link>
がレンダリングされるとき) 値バインディングを評価することによって決定されます。 - そのビュー ID への
<redirect/>
を持つナビゲーションルールはすべて要求パラメータを透過的に含みます。 パラメータの値はアプリケーション起動フェーズの最後で値バインディングを評価することにより決定されます。 - その値は特定のビュー ID を持つページの全 JSF フォーム送信で透過的に伝播します。 つまりビューパラメータは Faces 要求の
PAGE
スコープのコンテキスト変数のように動作します。
ただし、値バインディングで参照されるモデル属性の値である
/hello.jsp
に到着し、その値は対話 (または他のサーバー側の状態) を必要とせずにメモリに保持されます。