JSF「アクションから」ナビゲーション・ルールの例

JSF「from-action」ナビゲーションルールの例

JSFナビゲーションルールでは、2つの別々のアクションが1つのページで同じ「outcome」を返す状況が発生する場合があります。 この場合、「from-action」要素を使用して、2つのナビゲーションケースを区別できます。 次の例を参照してください。

1. マネージドBean

同じ結果を返す2つのアクション(「成功」)を持つマネージドBean。

PageController.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

@ManagedBean
@SessionScoped
public class PageController implements Serializable {

    private static final long serialVersionUID = 1L;

    public String processPage1(){
        return "success";
    }

    public String processPage2(){
        return "success";
    }
}

2. JSFページ

上記のPageControllerのメソッドにリンクされた2つのボタンがあるJSFページ。

start.xhtml




    
    

This is start.xhtml

どちらのアクションも同じ「成功」結果を返します。JSFはどこに行くべきかを決定しますか?

3. ナビゲーションルール

これを解決するには、「faces-config.xml」で次のナビゲーションルールを定義し、「from-action」要素を使用して同じ「結果」ナビゲーションケースを区別します。

faces-config.xml



    
    start.xhtml
    
        #{pageController.processPage1}
        success
        page1.xhtml
    
    
        #{pageController.processPage2}
        success
        page2.xhtml
    
    

4. Demo

上記の場合、ボタンは次のように機能します。

  1. action=”#\{pageController.processPage1}”のボタンをクリックすると、「成功」の結果が返され、page1.xhtmlに移動します。

  2. action=”#\{pageController.processPage2}”のボタンをクリックすると、「成功」の結果が返され、page2.xhtmlに移動します。

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

ダウンロード–JSF-2-From-Action-Navigation-Example.zip(11KB)