/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package viewhandler; import java.io.IOException; import java.util.Locale; import java.util.Map; import javax.faces.FacesException; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; /** * * @author lluis */ public class CustomViewHandler extends ViewHandler { protected ViewHandler baseViewHandler; public CustomViewHandler( ViewHandler viewHandler ) { super(); this.baseViewHandler = viewHandler; } @Override public Locale calculateLocale( FacesContext facesContext ) { return baseViewHandler.calculateLocale( facesContext ); } @Override public String calculateRenderKitId( FacesContext facesContext ) { return baseViewHandler.calculateRenderKitId( facesContext ); } @Override public UIViewRoot createView( FacesContext facesContext, String arg1 ) { setPostback( facesContext, false ); return baseViewHandler.createView( facesContext, arg1 ); } @Override public String getActionURL( FacesContext facesContext, String arg1 ) { return baseViewHandler.getActionURL( facesContext, arg1 ); } @Override public String getResourceURL( FacesContext facesContext, String arg1 ) { return baseViewHandler.getResourceURL( facesContext, arg1 ); } @Override public void renderView( FacesContext facesContext, UIViewRoot arg1 ) throws IOException, FacesException { baseViewHandler.renderView( facesContext, arg1 ); } @Override public UIViewRoot restoreView( FacesContext facesContext, String arg1 ) { setPostback( facesContext, true ); return baseViewHandler.restoreView( facesContext, arg1 ); } @Override public void writeState( FacesContext facesContext ) throws IOException { baseViewHandler.writeState( facesContext ); } public Map getRequestScope( FacesContext facesContext ) { //return (Map)facesContext.getApplication().createValueBinding(?#{requestScope}?).getValue(facesContext); //return (Map)facesContext.getApplication(). return ( Map ) facesContext.getApplication().getExpressionFactory().createValueExpression( facesContext.getELContext(), "#{requestScope}", Map.class ).getValue( facesContext.getELContext() ); } public void setPostback( FacesContext facesContext, boolean value ) { getRequestScope( facesContext ).put( "ispostback", new Boolean( value ) ); } }