L'interfaccia javax.faces.event.PhaseListener se implementata consente di scrivere codice in ogni punto del ciclo di vita della pagina JSF.
I cicli di vita della pagina sono:
Nel primo caso, una volta scritta la classe, è sufficiente dichiarare nel faces-config.xml
Nel secondo caso invece dobbiamo:
La classe RegistroEventiPagina è la seguente:
I cicli di vita della pagina sono:
- RESTORE VIEW
- APPLY REQUEST VALUES
- PROCESS VALIDATION
- UPDATE MODEL VALUE
- INVOKE APPLICATION
- RENDER RESPONSE
Nel primo caso, una volta scritta la classe, è sufficiente dichiarare nel faces-config.xml
<lifecycle>
<phase-listener>it.events.lifecycleJsf.RegistroEventiPagina</phase-listener>
</lifecycle>
Nel secondo caso invece dobbiamo:
- Definire la classe come proprietà del Managed Bean;
- Inserire nella pagina di interesse il tag
<f:phaseListener binding="#{workflowTabManager.eventListener}" type="it.events.lifecycleJsf.RegistroEventiPagina"/>
La classe RegistroEventiPagina è la seguente:
public class RegistroEventiPagina implements PhaseListener {
private static final long serialVersionUID = 1L;
private static Logger log=Logger.getLogger(Costanti.LOG_APPENDER);
@Override
public void afterPhase(PhaseEvent pe) {
if(pe.getPhaseId()==PhaseId.RESTORE_VIEW){
log.debug("Esco dalla fase di RESTORE_VIEW: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.APPLY_REQUEST_VALUES)
{
log.debug("Esco dalla fase di APPLY_REQUEST_VALUES: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.PROCESS_VALIDATIONS)
{
log.debug("Esco dalla fase di PROCESS_VALIDATIONS: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.UPDATE_MODEL_VALUES)
{
log.debug("Esco dalla fase di UPDATE_MODEL_VALUES: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.INVOKE_APPLICATION)
{
log.debug("Esco dalla fase di INVOKE_APPLICATION: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.RENDER_RESPONSE)
{
log.debug("Esco dalla fase di RENDER_RESPONSE: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
}
@Override
public void beforePhase(PhaseEvent pe) {
if(pe.getPhaseId()==PhaseId.RESTORE_VIEW){
log.debug("Entro nella fase di RESTORE_VIEW: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.APPLY_REQUEST_VALUES)
{
log.debug("Entro nella fase di APPLY_REQUEST_VALUES: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.PROCESS_VALIDATIONS)
{
log.debug("Entro nella fase di PROCESS_VALIDATIONS: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.UPDATE_MODEL_VALUES)
{
log.debug("Entro nella fase di UPDATE_MODEL_VALUES: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.INVOKE_APPLICATION)
{
log.debug("Entro nella fase di INVOKE_APPLICATION: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
else if(pe.getPhaseId()==PhaseId.RENDER_RESPONSE)
{
log.debug("Entro nella fase di RENDER_RESPONSE: "+new Date()+" phaseId-"+pe.getPhaseId().toString());
}
}
@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}
Nessun commento:
Posta un commento