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-PhaseIdenumeración que especifica el nombre de la fase para la cual se invoca el oyente (PhaseId.RENDER_RESPONSEcomo ú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.
}