JSF:ページ転送とページ転送
デフォルトでは、JSFは別のページにナビゲートする際にサーバー・ページを前方に実行します。ページ転送とページリダイレクトを区別するには、次の例を参照してください。
` start.xhtml
“ページで、” page1.xhtml` “ページに移動します。
1.ページ転送
ページ転送の仕組みは次のとおりです。
-
ブラウザがURLに「
GET
」リクエストを送信する:
-
JSFはリクエストを受け取り、 ”
start.xhtml
“を返します. -
ブラウザは ”
start.xhtml
“の内容を表示します. -
ユーザーがボタンをクリックします.
-
JSFはアクションを受け取り、内部ページ転送** を行います
”
page1.xhtml
“はサーバー側です。
-
JSFは ”
page1.xhtml
“を返します. -
ブラウザは ”
page1.xhtml
“の内容を表示します.
ページ転送では、
ブラウザのURLは更新されていません
。
2.ページリダイレクト
ページリダイレクトの仕組みは次のとおりです。
-
ブラウザがURLに「
GET
」リクエストを送信する:
-
JSFはリクエストを受け取り、 ”
start.xhtml
“を返します. -
ブラウザは ”
start.xhtml
“の内容を表示します. -
ユーザーがボタンをクリックします.
-
JSFはアクションを受け取り、 ”
リダイレクト
“を
”
page1.xhtml
“レスポンスがブラウザに返されます。
-
ブラウザが応答を受信し、URLに別の「
GET
」リクエストを送信する
-
JSFはリクエストを受け取り、 ”
page1.xhtml
“を返します. -
ブラウザは、 ”
page1.xhtml
“の内容と** ブラウザの内容を表示します
URLは更新されます** 。
JSF 2.0でページリダイレクトを有効にするには、結果文字列の最後に “faces-redirect = true”を追加します。
<h:form> <h:commandButton action="page1" value="Page1"/> </h:form>
-
ページリダイレクト。**
<h:form> <h:commandButton action="page1?faces-redirect=true" value="Page1"/> </h:form>
ナビゲーション規則では、
<navigation-case/> '内に
<redirect/> `要素を追加することによってページリダイレクトを有効にすることができます。
<navigation-rule> <from-view-id>start.xhtml</from-view-id> <navigation-case> <from-outcome>page1</from-outcome> <to-view-id>page1.xhtml</to-view-id> <redirect/> </navigation-case> </navigation-rule>
結論
ページリダイレクトはサーバーに追加のHTTP要求を追加したため、ページリダイレクトと比較すると、デフォルトのページ転送メカニズムがより高速になります。したがって、必要なときにページリダイレクトを有効にするだけです。たとえば、
Post/Redirect/Get
Design Patternを使用して古典的なリンクを解決します。//spring-mvc/handling- duplicate-form-submission-in-spring-mvc/重複したフォーム提出の問題]。
ソースコードをダウンロードする
ダウンロード – リンク://wp-content/uploads/2010/09/JSF-2-Page-Redirection-Example.zip[JSF-2-Page-Redirection-Example.zip](9KB)
リンク://タグ/jsf2/[jsf2]