JSF 2.0 Ajaxによるナビゲーション
JSF 2.0ではAjaxが簡単に行えるが、ページナビゲーションはどうか。
Ajaxとの連携がないフレームワークでは普通に考えるとページナビゲーションは別に用意して連結させる必要があるが、JSF2ではその心配はない。
たとえば以下のようなテンプレートがあったとする。
<h:commandButton action="#{hoge.next}">
<f:ajax />
</h:commandButton>
管理対象Beanは以下の通り。
@ManagedBean @RequestScoped public class Hoge { public String next(){ return "next"; } }
「next」に対して画面遷移をするのだが、これは画面全体、つまりHTMLそのものをまるごとAjaxで置換するようだ。おかげでURLはかわらない。
これが気持ち悪いという場合リダイレクトをいれてPRGパターンのように動かす場合は以下の通り。
@ManagedBean @RequestScoped public class Hoge { public String next(){ return "next?faces-redirect=true"; } }
これでredirectになり、画面遷移がGETによってされる。
つまり、そのアクションが通常のサブミットなのかAjaxなのか開発者はさほど意識する必要がない。すばらしい。