JSF:ページ転送とページ転送

デフォルトでは、JSFは別のページにナビゲートする際にサーバー・ページを前方に実行します。ページ転送とページリダイレクトを区別するには、次の例を参照してください。

` start.xhtml "ページで、" page1.xhtml` "ページに移動します。

1.ページ転送

ページ転送の仕組みは次のとおりです。

  1. ブラウザがURLに「 GET 」リクエストを送信する:

  1. JSFはリクエストを受け取り、 " start.xhtml "を返します.

  2. ブラウザは " start.xhtml "の内容を表示します.

  3. ユーザーがボタンをクリックします.

  4. JSFはアクションを受け取り、内部ページ転送** を行います

" page1.xhtml "はサーバー側です。

  1. JSFは " page1.xhtml "を返します.

  2. ブラウザは " page1.xhtml "の内容を表示します.

ページ転送では、 ブラウザのURLは更新されていません

jsf2-page-forward-example、title = "jsf2-page-forward-example"、width = 639、height = 341

2.ページリダイレクト

ページリダイレクトの仕組みは次のとおりです。

  1. ブラウザがURLに「 GET 」リクエストを送信する:

  1. JSFはリクエストを受け取り、 " start.xhtml "を返します.

  2. ブラウザは " start.xhtml "の内容を表示します.

  3. ユーザーがボタンをクリックします.

  4. JSFはアクションを受け取り、 " リダイレクト "を

" page1.xhtml "レスポンスがブラウザに返されます。

  1. ブラウザが応答を受信し、URLに別の「 GET 」リクエストを送信する

  1. JSFはリクエストを受け取り、 " page1.xhtml "を返します.

  2. ブラウザは、 " page1.xhtml "の内容と** ブラウザの内容を表示します

URLは更新されます** 。

jsf2-page-redirection-example、title = "jsf2-page-redirection-example"、width = 639、height = 350

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]

前の投稿:RESTEasy - タイプ:multipart/form-dataのメッセージボディリーダーを見つけることができませんでした
次の投稿:MongoDB - 配列からフィールドを削除する