JSF 2 PreRenderViewEvent Beispiel
In JSF 2.0 können Sie das Systemereignisjavax.faces.event.PreRenderViewEventanhängen, um eine benutzerdefinierte Aufgabe auszuführen, bevor ein Ansichtsstamm (JSF-Seite) angezeigt wird.
Unten sehen Sie ein vollständiges Beispiel fürPreRenderViewEvent:
1. Managed Bean
Erstellen Sie eine normale Bean, die eine Methodensignatur „public void method-name(ComponentSystemEvent event)“ enthält. Später werden Sie den Listener bitten, diese Methode aufzurufen.
Bei dieser Methode wird "role" in der aktuellen Sitzung überprüft. Wenn die Rolle NICHT gleich "admin" ist, navigieren Sie zum Ergebnis "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 Seite
Jetzt verwenden Sie das Tagf:event, um das Systemereignis "preRenderView" an die Seite "default.xhtml" anzuhängen.
default.xhtml
JSF 2 protected page example
access-denied.xhtml
Access Denied!
3. Demo
Greifen Sie auf diese Seite „default.xhtml“ zu, da das Sitzungsobjekt keinen Wert für „role“ enthält, sodass JSF zu einer anderen Seite „access-denied.xhtml“ navigiert.

Quellcode herunterladen
Laden Sie es herunter -JSF-2-PreRenderViewEvent-Example.zip (10 KB)