/* * {START_JAVA_COPYRIGHT_NOTICE * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * END_COPYRIGHT_NOTICE} */ // Note: Do not use multiline comments below for TLD examples as renderer XML // files shall be used to generate Javadoc. Embedding a "*/" in a Javadoc // comment cuases compile errors because it terminates the outer comment. package table.util; import java.util.Map; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.FactoryFinder; import javax.faces.lifecycle.Lifecycle; import javax.faces.lifecycle.LifecycleFactory; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.servlet.http.HttpServletRequest; // This class restores examples to a clean state. Since mutiple examples use // the same backing beans, state must be reset. public class Clean implements PhaseListener { private Group group = null; // Group util. // Default constructor. public Clean(Group group) { this.group = group; // Add phase listener. LifecycleFactory factory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); Lifecycle lifecycle = factory.getLifecycle( LifecycleFactory.DEFAULT_LIFECYCLE); lifecycle.addPhaseListener(this); } // Called during the JSF Lifecycle after the RENDER_RESPONSE phase. // // @param event The PhaseEvent object. public void afterPhase(PhaseEvent event) { // Since mutiple examples are using the same beans, we're forcing JSF to // create the component per request; thus, preventing caching issues. if (event.getPhaseId() != PhaseId.RENDER_RESPONSE) { return; } group.getMessages().setMessage(null); // Clear JSF messages. group.setTableRowGroup(null); // Clear TableRowGroup component. group.setCheckbox(null); // Clear Checkbox component. } // Called during the JSF Lifecycle before the RENDER_RESPONSE phase. // // @param event The PhaseEvent object. public void beforePhase(PhaseEvent event) { if (event.getPhaseId() == PhaseId.RESTORE_VIEW) { // No query data means the page is rendered for the first time. ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); String uri = ((HttpServletRequest) context.getRequest()).getRequestURI(); Map map = context.getRequestParameterMap(); if (uri.indexOf(".jsp") != -1 && map.size() == 0) { // Initialize TableSelectPhaseListener for new example. group.getSelect().keepSelected(false); group.getSelect().clear(); } } else if (event.getPhaseId() == PhaseId.INVOKE_APPLICATION) { // Since mutiple examples use the same beans, the binding simply // tells us that checkbox state is maintained arcoss pages. if (group.getCheckbox() != null) { group.getSelect().keepSelected(true); } } } // Get the phase id. public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } }