昨日のエントリの続きです。
昨日の動作はPrimeFacesのコンポーネントでも同じことができます(^^)
一応書きかえてみると
<p:commandButton id="saveBtn0" ajax="false" value="普通に画面遷移する"
action="#{beforeRedirectBean.redirectPage()}" />
<p:commandButton id="saveBtn1" ajax="false" value="プログラムで画面遷移を止める"
actionListener="#{beforeRedirectBean.thinkAction()}"
action="#{beforeRedirectBean.redirectPage()}"/>
基本的には、hタグをpタグに変えただけです。
あと、画面遷移なので、pタグのcommandButtonはajax=falseを指定しています。
BackingBeanの抜粋
public String redirectPage(){
return "afterRedirect.xhtml";
}
public void thinkAction(){
FacesContext context = FacesContext.getCurrentInstance();
CommandButton btn = (CommandButton)context.getViewRoot().findComponent(":beforeFrm:saveBtn1");
btn.setActionExpression(null);
}
こちらもほぼ昨日のコードと同じです。コンポーネントがPrimeFacesに変わったのでimport文を
- import javax.faces.component.UICommand;
から
- import org.primefaces.component.commandbutton.CommandButton;
に変えています。
これでPrimeFaces版の完成です。実行すると昨日作ったものと同じ挙動となります。
実行すると、昨日のとはちょっと違った見え方のボタンが出て
左のボタンを押下すると
遷移します。
右のボタンを押下すると
そのまま留まります。
まあ確認するまでもなく当たり前な挙動なのですが(^^;