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».

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