JSF 2 PreRenderViewEventの例

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」に移動します。

jsf2-PreRenderViewEvent-example

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

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