コード 1 - testPhaseExecution.xsp: <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:this.afterRestoreView> <![CDATA[#{javascript:println("RESTORE_VIEW: " + debugBean.isRestoreViewPhase());}]]> </xp:this.afterRestoreView> <xp:button value="Test Phases" id="button1"> <xp:this.rendered> <![CDATA[#{javascript: println("RESTORE_VIEW: " + debugBean.isRestoreViewPhase()); println("APPLY_REQUEST_VALUES: " + debugBean.isApplyRequestValuesPhase()); println("PROCESS_VALIDATIONS: " + debugBean.isProcessValidationsPhase()); println("UPDATE_MODEL_VALUES: " + debugBean.isUpdateModelValuesPhase()); println("INVOKE_APPLICATION: " + debugBean.isInvokeApplicationPhase()); println("RENDER_RESPONSE: " + debugBean.isRenderResponsePhase()); // note same as: println("RENDER_RESPONSE: " + view.isRenderingPhase()); return true; }]]> </xp:this.rendered> <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> <xp:this.action> <![CDATA[#{javascript: println("INVOKE_APPLICATION: " + debugBean.isInvokeApplicationPhase()); }]]> </xp:this.action> </xp:eventHandler> </xp:button> </xp:view> ----------------------------------------------------------------------------------------------------------------- コード 2 - DebugBean.java: package com.ibm.xsp.masterclass.beans; import java.io.Serializable; import javax.faces.context.FacesContext; import com.ibm.xsp.masterclass.lifecycle.DebugBeanPhaseListener; /* * @author Tony McGuckin, IBM */ public class DebugBean implements Serializable { private static final long serialVersionUID = -1698889483899280998L; public static final String BEAN_NAME = "debugBean"; public static DebugBean instance; protected boolean debug = false; // ------------------------------------------------------------------------ public DebugBean() { instance = this; } // ------------------------------------------------------------------------ public static DebugBean getInstance() { if (null == instance) { FacesContext context = FacesContext.getCurrentInstance(); instance = (DebugBean) context.getApplication().getVariableResolver().resolveVariable(context, BEAN_NAME); } return instance; } // ------------------------------------------------------------------------ public boolean isDebug() { return debug; } public void setDebug(boolean debug) { this.debug = debug; } public void setDebug(String debug) { this.debug = Boolean.parseBoolean(debug); } // ------------------------------------------------------------------------ public boolean isRestoreViewPhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isRestoreViewPhase()); } public boolean isApplyRequestValuesPhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isApplyRequestValuesPhase()); } public boolean isProcessValidationsPhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isProcessValidationsPhase()); } public boolean isUpdateModelValuesPhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isUpdateModelValuesPhase()); } public boolean isInvokeApplicationPhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isInvokeApplicationPhase()); } public boolean isRenderResponsePhase(){ DebugBeanPhaseListener listener = DebugBeanPhaseListener.getInstance(); return (null != listener && listener.isRenderResponsePhase()); } // ------------------------------------------------------------------------ } // end DebugBean ----------------------------------------------------------------------------------------------------------------- コード 3 - DebugBeanPhaseListener.java: package com.ibm.xsp.masterclass.lifecycle; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import com.ibm.xsp.masterclass.beans.DebugBean; /* * @author Tony McGuckin, IBM */ public class DebugBeanPhaseListener implements javax.faces.event.PhaseListener { private static final long serialVersionUID = 1L; private static DebugBeanPhaseListener instance; private PhaseId phaseId; public DebugBeanPhaseListener(){ instance = this; } // ------------------------------------------------------------------------ public static DebugBeanPhaseListener getInstance(){ if(null == instance){ instance = new DebugBeanPhaseListener(); } return instance; } // ------------------------------------------------------------------------ public boolean isRestoreViewPhase(){ return (null != phaseId && phaseId.equals(PhaseId.RESTORE_VIEW)); } public boolean isApplyRequestValuesPhase(){ return (null != phaseId && phaseId.equals(PhaseId.APPLY_REQUEST_VALUES)); } public boolean isProcessValidationsPhase(){ return (null != phaseId && phaseId.equals(PhaseId.PROCESS_VALIDATIONS)); } public boolean isUpdateModelValuesPhase(){ return (null != phaseId && phaseId.equals(PhaseId.UPDATE_MODEL_VALUES)); } public boolean isInvokeApplicationPhase(){ return (null != phaseId && phaseId.equals(PhaseId.INVOKE_APPLICATION)); } public boolean isRenderResponsePhase(){ return (null != phaseId && phaseId.equals(PhaseId.RENDER_RESPONSE)); } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } // ------------------------------------------------------------------------ public void beforePhase(PhaseEvent event) { try { phaseId = event.getPhaseId(); if (DebugBean.getInstance().isDebug()) { if (event.getPhaseId().equals(PhaseId.RESTORE_VIEW)) { System.out.println(" "); System.out.println("Request:\tStarted..."); } System.out.println(" "); System.out.println("Lifecycle:\tBefore Phase: " + event.getPhaseId()); } } catch (Exception e) { e.printStackTrace(); } } // ------------------------------------------------------------------------ public void afterPhase(PhaseEvent event) { try { phaseId = event.getPhaseId(); if (DebugBean.getInstance().isDebug()) { System.out.println("Lifecycle:\tAfter Phase: " + event.getPhaseId()); System.out.println(" "); if (event.getPhaseId().equals(PhaseId.RENDER_RESPONSE)) { System.out.println("Request:\tCompleted."); System.out.println(" "); } } } catch (Exception e) { e.printStackTrace(); } } } // end DebugBeanPhaseListener ----------------------------------------------------------------------------------------------------------------- コード 4 - faces-config.xml: <?xml version="1.0" encoding="UTF-8"?> <faces-config> <lifecycle> <phase-listener>com.ibm.xsp.masterclass.lifecycle.DebugBeanPhaseListener</phase-listener> </lifecycle> <managed-bean> <managed-bean-name>debugBean</managed-bean-name> <managed-bean-class>com.ibm.xsp.masterclass.beans.DebugBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>debug</property-name> <value>false</value> </managed-property> </managed-bean> </faces-config>