JSF 2 PreRenderViewEventの例
JSF 2.0では、ビュールート(JSFページ)が表示される前に、javax.faces.event.PreRenderViewEventシステムイベントをアタッチしてカスタムタスクを実行できます。
以下の完全なPreRenderViewEventの例を見てみましょう。
1. マネージドBean
通常のBeanを作成し、メソッドシグネチャ「public void method-name(ComponentSystemEvent event)」を含めます。後でリスナーにこのメソッドを呼び出すように依頼します。
この方法では、現在のセッションで「role」を検証し、役割が「admin」と等しくない場合は、結果「access-denied」に移動します。
package com.example;
import javax.faces.application.ConfigurableNavigationHandler;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;
@ManagedBean(name="user")
@SessionScoped
public class UserBean{
public void isAdmin(ComponentSystemEvent event){
FacesContext fc = FacesContext.getCurrentInstance();
if (!"admin".equals(fc.getExternalContext().getSessionMap().get("role"))){
ConfigurableNavigationHandler nav
= (ConfigurableNavigationHandler)
fc.getApplication().getNavigationHandler();
nav.performNavigation("access-denied");
}
}
}
2. JSFページ
ここで、f:eventタグを使用して、「preRenderView」システムイベントを「default.xhtml」ページに添付します。
default.xhtml
JSF 2 protected page example
access-denied.xhtml
Access Denied!
3. Demo
セッションオブジェクトには「role」の値がないため、このページ「default.xhtml」にアクセスします。JSFは別のページ「access-denied.xhtml」に移動します。

ソースコードをダウンロード
ダウンロード–JSF-2-PreRenderViewEvent-Example.zip(10KB)