Ejemplo Interceptor JSF
Febrero 1st, 2009Tenemos que crear un interceptor, que se va a encargar de capturar el inicio o el fin de cada fase. Para nuestro ejemplo, lo que vamos a hacer, es que antes de que se inicien o finalicen las fases, se mostrará por la consola, un mensaje de información.
Este interceptor, entre otras muchas utilidades, puede sernos útil a la hora de comprobar por qué no se están renderizando ciertos componentes o como afecta la propiedad immediate a nuestra ventana.
InterceptorFases.java
public class InterceptorFases extends SeamPhaseListener{
private static final long serialVersionUID = 1L;
public void beforePhase(PhaseEvent event){
System.out.println(
“————-ANTES DE LA FASE “+
event.getPhaseId()+”———–”);
}
public void afterPhase(PhaseEvent event){
System.out.println(
“————-DESPUES DE LA FASE “+
event.getPhaseId()+”———–”);
}
}
A continuación debemos configurar el interceptor para que escuche los eventos lanzados por el PhaseEvent. Esto debemos definirlo en el fichero de configuración faces-config.xml. Tenemos que añadir un listener adicional, que será nuestro interceptor:
<lifecycle>
<phase-listener>
rutaDelPaquete.InterceptorFases
</phase-listener>
</lifecycle>
Una vez hecho esto, si arrancamos nuestra aplicación, en cada fase del ciclo de vida entrará en acción el interceptor que hemos creado. Accediendo al objeto event, podréis acceder también al FacesContext, por tanto, aparte de esta utilidad, se le pueden dar otras muchas, dependiendo de lo que queráis en cada caso.