PhaseListener
.Since the PhaseListener intercepts the process, you can use it to learn the phases. The PhaseListener below is an example of one that reports on all
PhaseEvents
. You should modify it to learn what occurs during each phase.PhaseListenerImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package listeners; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; /** * <p>An example {@link javax.faces.event.PhaseListener} implementation that * reports {@link javax.faces.event.PhaseEvent} events. </p> * * @author John Yeary * @version 1.0 */ public class PhaseListenerImpl implements PhaseListener { /** * {@inheritDoc} * <p>Reports {@link javax.faces.event.PhaseId} value to {@code System.out}. * </p> */ @Override public void afterPhase(PhaseEvent pe) { System.out.println( "After Phase: " + pe.getPhaseId().toString() + " invoked." ); } /** * {@inheritDoc} * <p>Reports {@link javax.faces.event.PhaseId} value to {@code System.out}. * </p> */ @Override public void beforePhase(PhaseEvent pe) { System.out.println( "Before Phase: " + pe.getPhaseId().toString() + " invoked." ); } /** * {@inheritDoc} * * @return {@link javax.faces.event.PhaseId#ANY_PHASE} */ @Override public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } } |
INFO: Before Phase: RESTORE_VIEW 1 invoked. INFO: After Phase: RESTORE_VIEW 1 invoked. INFO: Before Phase: APPLY_REQUEST_VALUES 2 invoked. INFO: After Phase: APPLY_REQUEST_VALUES 2 invoked. INFO: Before Phase: PROCESS_VALIDATIONS 3 invoked. INFO: After Phase: PROCESS_VALIDATIONS 3 invoked. INFO: Before Phase: UPDATE_MODEL_VALUES 4 invoked. INFO: After Phase: UPDATE_MODEL_VALUES 4 invoked. INFO: Before Phase: INVOKE_APPLICATION 5 invoked. INFO: After Phase: INVOKE_APPLICATION 5 invoked. INFO: Before Phase: RENDER_RESPONSE 6 invoked. INFO: After Phase: RENDER_RESPONSE 6 invoked.