Jsf-page-navigation
JSF-ページナビゲーション
ナビゲーションルールは、ボタンまたはリンクがクリックされたときに表示されるビューを記述する、JSFフレームワークによって提供されるルールです。
ナビゲーションルールは、faces-config.xmlという名前のJSF構成ファイルで定義できます。 マネージドBeanで定義できます。
ナビゲーションルールには、結果のビューを表示できる条件に基づいた条件を含めることができます。 JSF 2.0は、ナビゲーションルールを定義する必要のない暗黙的なナビゲーションも提供します。
暗黙的なナビゲーション
JSF 2.0は、暗黙的なナビゲーション*という名前の*自動ビューページリゾルバー*メカニズムを提供します。 この場合、ビュー名をアクション属性に入れるだけで、JSFはデプロイされたアプリケーションで正しい *view ページを自動的に検索します。
JSFページの自動ナビゲーション
JSF UIコンポーネントのアクション属性にビュー名を設定します。
ここで、 Page2 ボタンをクリックすると、JSFはビュー名 page2 をpage2.xhtml拡張子として解決し、現在のディレクトリで対応するビューファイル page2.xhtml を見つけます。
マネージドBeanの自動ナビゲーション
マネージドBeanでメソッドを定義して、ビュー名を返します。
マネージドBeanを使用して、JSF UIコンポーネントのアクション属性でビュー名を取得します。
ここで、 Page1 ボタンをクリックすると、JSFはビュー名 page1 をpage1.xhtml拡張子として解決し、現在のディレクトリで対応するビューファイル page1.xhtml を見つけます。
条件付きナビゲーション
マネージドBeanを使用すると、ナビゲーションを非常に簡単に制御できます。 マネージドBeanの次のコードを見てください。
JSF UIコンポーネントのリクエストパラメータとしてpageIdを渡します。
ここで、「Page1」ボタンをクリックすると。
- JSFは、パラメーターpageId = 1でリクエストを作成します
- 次に、JSFはこのパラメーターをnavigationControllerの管理プロパティpageIdに渡します
- これで、navigationController.showPage()が呼び出され、pageIdを確認した後にviewをpage1として返します
- JSFはビュー名page1をpage1.xhtml拡張子として解決します
- 現在のディレクトリで対応するビューファイルpage1.xhtmlを見つけます
from-actionに基づくナビゲーションの解決
マネージドBeanの異なるメソッドが同じビュー名を返す場合でも、JSFはナビゲーション解決オプションを提供します。
マネージドBeanの次のコードを見てください。
ビューを解決するには、 faces-config.xml で次のナビゲーションルールを定義します
ここで、Page1ボタンがクリックされたとき-
- * navigationController.processPage1()*が呼び出され、ページとしてビューが返されます
- ビュー名は* page1で、 faces-configのfrom-action はnavigationController.processPage1 であるため、JSFはビュー名 *page1 を解決します。
- 現在のディレクトリで対応するビューファイル page1.xhtml を見つけます。
フォワードとリダイレクト
デフォルトでは、JSFは別のページにナビゲートしている間にサーバーページを転送し、アプリケーションのURLは変更されません。
ページのリダイレクトを有効にするには、ビュー名の最後に faces-redirect = true を追加します。
ここで、 Forward の下の Page1 ボタンをクリックすると、次の結果が得られます。
ここで、リダイレクト*の下の *Page1 ボタンをクリックすると、次の結果が得られます。
応用例
上記のすべてのナビゲーションの例をテストするために、テストJSFアプリケーションを作成しましょう。
Step | Description |
---|---|
1 | Create a project with a name helloworld under a package com.finddevguides.test as explained in the JSF - Create Application chapter. |
2 | Create NavigationController.java under a package com.finddevguides.test as explained below. |
3 | Create faces-config.xml under a WEB-INF folder and updated its contents as explained below. |
4 | Update web.xml under a WEB-INF folder as explained below. |
5 | Create page1.xhtml and page2.xhtml and modify home.xhtml under a webapp folder as explained below. |
6 | Compile and run the application to make sure business logic is working as per the requirements. |
7 | Finally, build the application in the form of war file and deploy it in Apache Tomcat Webserver. |
8 | Launch your web application using appropriate URL as explained below in the last step. |
faces-config.xml
web.xml
page1.xhtml
page2.xhtml
home.xhtml
すべての変更を完了したら、JSF-アプリケーションの作成の章で行ったようにアプリケーションをコンパイルして実行します。 すべてがアプリケーションで問題ない場合、次の結果が生成されます。