JSF 2 PreRenderViewEvent-Beispiel

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.

jsf2-PreRenderViewEvent-example

Quellcode herunterladen

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