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
上記の場合、ボタンは次のように機能します。
-
action=”#\{pageController.processPage1}”のボタンをクリックすると、「成功」の結果が返され、page1.xhtmlに移動します。
-
action=”#\{pageController.processPage2}”のボタンをクリックすると、「成功」の結果が返され、page2.xhtmlに移動します。
ソースコードをダウンロード
ダウンロード–JSF-2-From-Action-Navigation-Example.zip(11KB)