Exemple avec JSF 2 PreRenderViewEvent

Exemple JSF 2 PreRenderViewEvent

Dans JSF 2.0, vous pouvez attacher un événement systèmejavax.faces.event.PreRenderViewEvent pour effectuer une tâche personnalisée avant l'affichage d'une racine de vue (page JSF).

Voyons un exemple complet dePreRenderViewEvent ci-dessous:

1. Bean géré

Créez un bean normal, contient une signature de méthode «public void method-name(ComponentSystemEvent event)», plus tard vous demanderez à l'auditeur d'appeler cette méthode.

Dans cette méthode, il valide «role» dans la session courante, si le rôle n'est PAS égal à «admin», puis naviguez vers le résultat «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. Page JSF

Maintenant, vous utilisez la balisef:event pour attacher l'événement système «preRenderView» à la page «default.xhtml».

default.xhtml




    

    

        

JSF 2 protected page example

access-denied.xhtml




    

        

Access Denied!

3. Demo

Accédez à cette page «default.xhtml», car il n'y a pas de valeur «role» dans l'objet de session, JSF naviguera donc vers une autre page «access-denied.xhtml».

jsf2-PreRenderViewEvent-example

Télécharger le code source

Téléchargez-le -JSF-2-PreRenderViewEvent-Example.zip (10 Ko)