JSF 2.0での暗黙的なナビゲーション

JSF 2.0の暗黙的なナビゲーション

JSF 1.2では、すべてのページナビゲーションは、次のように「faces-config.xml」ファイルで宣言する必要があります。

...

   page1.xhtml
   
       page2
       /page2.xhtml
   

...

JSF 2では、「outcome」をページ名として扱います。たとえば、「page1.xhtml」に移動する場合、「outcome」を「page1」として入力する必要があります。 このメカニズムは「Implicit Navigation」と呼ばれ、面倒なナビゲーションルールを宣言する必要はありません。代わりに、「結果」をaction属性に直接入力するだけで、JSFは正しい「view id」を見つけます。 」を自動的に。

JSF 2で暗黙的なナビゲーションを実装するには、2つの方法があります。

1. JSFページの結果

「結果」をJSFページに直接配置できます。

page1.xhtml –現在のページから「page2.xhtml」に移動するためのコマンドボタンを備えたJSFページ。


    

ボタンがクリックされると、JSFはアクション値または結果「page2」を「xhtml」拡張子とマージし、現在の「page2.xhtml」でビュー名「page2.xhtml」を見つけます。 t3)s」ディレクトリ。

2. マネージドBeanの結果

また、次のようなマネージドBeanで「結果」を定義することもできます。

PageController.java

@ManagedBean
@SessionScoped
public class PageController implements Serializable {

    public String moveToPage2(){
        return "page2"; //outcome
    }
}

JSFページのアクション属性で、「method expression」を使用してメソッドを呼び出すだけです。

page1.xhtml


    

リダイレクション

デフォルトでは、JSF 2は別のページにナビゲートしている間に転送を実行します。これにより、ページURLは常に1つ遅れます:)。 たとえば、「page1.xhtml」から「page2.xhtml」に移動しても、ブラウザーのURLアドレスバーには同じ「page1.xhtml」URLが表示されます。

これを回避するには、「結果」文字列の末尾に「faces-redirect=true」を追加することで、リダイレクトを使用するようにJSFに指示できます。


    

Note
単純なページナビゲーションの場合、この新しい暗黙のナビゲーションで十分です。複雑なページナビゲーションの場合でも、faces-config.xmlファイルでページフロー(ナビゲーションルール)を宣言できます。

ソースコードをダウンロード

ダウンロード–JSF-2-Implicit-Navigation-Example.zip(10KB)