validaciones sintaxis sesiones mvc framework formularios faces etiquetas ejemplo jsf jsf-2 phaselistener

sintaxis - sesiones en jsf



¿Cómo implementar un PhaseListener que se ejecuta al final del ciclo de vida? (2)

¿Cómo puedo implementar un PhaseListener que se ejecuta al final del ciclo de vida JSF?


En jsf 2 puede usar <f:phaseListener type="my.MyPhaseListener"> para conectar MyPhaseListener a algún facelet . MyPhaseListener debe implementar PhaseListener y anular

  • afterPhase - con código que se ejecutará después del final de la fase
  • beforePhase - con código que se ejecutará antes de que la fase comience
  • getPhaseId - PhaseId enumeración que especifica el nombre de la fase para la cual se invoca el oyente ( PhaseId.RENDER_RESPONSE como última fase del ciclo de vida)

PhaseListener implementar la interfaz PhaseListener y enganchar beforePhase() de PhaseId_RENDER_RESPONSE . La respuesta de representación es la última fase del ciclo de vida JSF.

public class MyPhaseListener implements PhaseListener { @Override public PhaseId getPhaseId() { return PhaseId.RENDER_RESPONSE; } @Override public void beforePhase(PhaseEvent event) { // Do your job here which should run right before the RENDER_RESPONSE. } @Override public void afterPhase(PhaseEvent event) { // Do your job here which should run right after the RENDER_RESPONSE. } }

Para que se ejecute, regístrelo de la siguiente manera en faces-config.xml :

<lifecycle> <phase-listener>com.example.MyPhaseListener</phase-listener> </lifecycle>

Actualice el oyente de la fase anterior es de hecho aplicativo. Para tener un detector de fase para una vista específica, use los beforePhase y / o afterPhase de <f:view> .

P.ej

<f:view beforePhase="#{bean.beforePhase}"> ... </f:view>

con

public void beforePhase(PhaseEvent event) { if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) { // Do here your job which should run right before the RENDER_RESPONSE. } }

Un camino más JSF 2.0 está por cierto usando el <f:event type="preRenderView"> :

<f:event type="preRenderView" listener="#{bean.preRenderView}" />

con

public void preRenderView() { // Do here your job which should run right before the RENDER_RESPONSE. }