/** * Initialize the ViewHandler during its first request. */ protected void initialize(FacesContext context) { synchronized (this) { if (this.faceletFactory == null) { log.fine("Initializing"); Compiler c = this.createCompiler(); this.initializeCompiler(c); this.faceletFactory = this.createFaceletFactory(c); this.initializeMappings(context); this.initializeMode(context); this.initializeBuffer(context); log.fine("Initialization Successful"); } } }
protected void handleFaceletNotFound(FacesContext context, String viewId) throws FacesException, IOException { String actualId = this.getActionURL(context, viewId); Object respObj = context.getExternalContext().getResponse(); if (respObj instanceof HttpServletResponse) { HttpServletResponse respHttp = (HttpServletResponse) respObj; respHttp.sendError(HttpServletResponse.SC_NOT_FOUND, actualId); context.responseComplete(); } }
protected String getRenderedViewId(FacesContext context, String actionId) { ExternalContext extCtx = context.getExternalContext(); String viewId = actionId; if (extCtx.getRequestPathInfo() == null) { String viewSuffix = this.getDefaultSuffix(context); viewId = new StringBuffer(viewId).replace(viewId.lastIndexOf('.'), viewId.length(), viewSuffix).toString(); } if (log.isLoggable(Level.FINE)) { log.fine("ActionId -> ViewId: " + actionId + " -> " + viewId); } return viewId; }
this.initialize(context); if (!handledByFacelets(viewToRender.getViewId())) { this.parent.renderView(context, viewToRender); return; this.buildView(context, viewToRender); ResponseWriter origWriter = this.createResponseWriter(context); this.handleFaceletNotFound(context, viewToRender.getViewId()); } catch (Exception e) { this.handleRenderException(context, e); } finally { if (stateWriter != null)
if (!this.buildBeforeRestore || !handledByFacelets(viewId)) { return this.parent.restoreView(context, viewId); this.initialize(context); if (!isPostback11(context)) { return null; String renderKitId = outerViewHandler.calculateRenderKitId(context); UIViewRoot viewRoot = createView(context, viewId); context.setViewRoot(viewRoot); try { this.buildView(context, viewRoot); } catch (IOException ioe) { log.log(Level.SEVERE, "Error Building View", ioe);
contentType = getResponseContentType(context, writer.getContentType()); encoding = getResponseEncoding(context, writer.getCharacterEncoding());
return super.createResponseWriter(context);
logger.debug("------------------- prevent boucle -------------------"); super.handleRenderException(context, ex); return;
protected void buildView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException { // setup our viewId String renderedViewId = this.getRenderedViewId(context, viewToRender .getViewId()); viewToRender.setViewId(renderedViewId); if (log.isLoggable(Level.FINE)) { log.fine("Building View: " + renderedViewId); } // grab our FaceletFactory and create a Facelet Facelet f = null; FaceletFactory.setInstance(this.faceletFactory); try { f = this.faceletFactory.getFacelet(viewToRender.getViewId()); } finally { FaceletFactory.setInstance(null); } // populate UIViewRoot long time = System.currentTimeMillis(); f.apply(context, viewToRender); time = System.currentTimeMillis() - time; if (log.isLoggable(Level.FINE)) { log.fine("Took " + time + "ms to build view: " + viewToRender.getViewId()); } }