Пример JSF 2 PreRenderViewEvent

Пример JSF 2 PreRenderViewEvent

В JSF 2.0 вы можете присоединить системное событиеjavax.faces.event.PreRenderViewEvent для выполнения настраиваемой задачи перед отображением корневого каталога (страницы JSF).

Давайте посмотрим на полный примерPreRenderViewEvent ниже:

1. Управляемый Боб

Создайте обычный 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

Откройте эту страницу «default.xhtml», поскольку в объекте сеанса нет значения «role», поэтому JSF перейдет на другую страницу «access-denied.xhtml».

jsf2-PreRenderViewEvent-example

Скачать исходный код

Скачать -JSF-2-PreRenderViewEvent-Example.zip (10 КБ)