writer.flush(); writer.endCDATA(); writer.endInsert(); writer.endUpdate(); writer.startError(""); writer.endError(); writer.getWrapped().endElement("changes"); writer.getWrapped().endElement("partial-response"); writer.startDocument(); writer.startElement("changes", null); writer.startElement("update", null); writer.writeAttribute("id", component.getClientId(context), null); writer.startCDATA(); writer.endCDATA(); writer.endElement("update"); writer.startElement("eval", null); writer.startCDATA(); writer.write("var hf=function(type,message,timestampp){"); writer.write(handlerComponent.getOnexception()); writer.write("};hf.call(this,\""
@Override public void endEval() throws IOException { wrapped.endEval(); }
FacesContext context = FacesContext.getCurrentInstance(); PrimeApplicationContext applicationContext = PrimeApplicationContext.getCurrentInstance(context); try { UIViewRoot viewRoot = context.getViewRoot(); if (viewRoot != null) { if (context.isPostback() && !context.getPartialViewContext().isRenderAll() && !applicationContext.getEnvironment().isAtLeastJsf23()) { List<ResourceUtils.ResourceInfo> initialResources = DynamicResourcesPhaseListener.getInitialResources(context); ResourceUtils.ResourceInfo resourceInfo = newResources.get(i); if (!updateStarted) { ((PartialResponseWriter) getWrapped()).startUpdate("javax.faces.Resource"); updateStarted = true; resourceInfo.getResource().encodeAll(context); ((PartialResponseWriter) getWrapped()).endUpdate();
protected void handleRedirect(FacesContext context, Throwable rootCause, ExceptionInfo info, boolean responseResetted) throws IOException { ExternalContext externalContext = context.getExternalContext(); externalContext.getSessionMap().put(ExceptionInfo.ATTRIBUTE_NAME, info); String url = externalContext.getRequestContextPath() + errorPage; if (responseResetted && context.getPartialViewContext().isAjaxRequest()) { PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter(); externalContext.addResponseHeader("Content-Type", "text/xml; charset=" + externalContext.getResponseCharacterEncoding()); externalContext.addResponseHeader("Cache-Control", "no-cache"); externalContext.setResponseContentType("text/xml"); writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); writer.startElement("partial-response", null); writer.startElement("redirect", null); writer.writeAttribute("url", url, null); writer.endElement("redirect"); writer.endElement("partial-response"); if (externalContext.isResponseCommitted() && !context.getPartialViewContext().isAjaxRequest()) { PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter(); writer.startElement("script", null); writer.write("window.location.href = '" + url + "';"); writer.endElement("script"); writer.getWrapped().endDocument();
private void renderState(FacesContext context) throws IOException { // Get the view state and write it to the response.. PartialViewContext pvc = context.getPartialViewContext(); PartialResponseWriter writer = pvc.getPartialResponseWriter(); String viewStateId = Util.getViewStateId(context); writer.startUpdate(viewStateId); String state = context.getApplication().getStateManager().getViewState(context); writer.write(state); writer.endUpdate(); ClientWindow window = context.getExternalContext().getClientWindow(); if (null != window) { String clientWindowId = Util.getClientWindowId(context); writer.startUpdate(clientWindowId); writer.write(window.getId()); writer.endUpdate(); } }
private void renderAngularResponse() { try { FacesContext ctx = FacesContext.getCurrentInstance(); PartialViewContext pvc = ctx.getPartialViewContext(); PartialResponseWriter writer = pvc.getPartialResponseWriter(); ResponseWriter orig = ctx.getResponseWriter(); ctx.getAttributes().put(ORIGINAL_WRITER, orig); ExternalContext exContext = ctx.getExternalContext(); exContext.setResponseContentType("text/xml"); exContext.addResponseHeader("Cache-Control", "no-cache"); String encoding = writer.getCharacterEncoding(); if (encoding == null) { encoding = "UTF-8"; writer.writePreamble("<?xml version='1.0' encoding='" + encoding + "'?>"); writer.startDocument(); writer.startEval(); encodeAngularScript(writer, ctx); writer.endEval(); renderState(ctx); writer.endDocument(); } catch (IOException ex) { this.cleanupAfterView();
@Override public void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId) throws IOException { if (AbstractTabPanel.HEADER_META_COMPONENT.equals(metaComponentId)) { AbstractTabPanel panel = (AbstractTabPanel) component; PartialResponseWriter w = context.getPartialViewContext().getPartialResponseWriter(); String id = component.getClientId() + AbstractTabPanel.HEADER_META_COMPONENT; w.startUpdate(id); writeTabsLine(w, context, panel); w.endUpdate(); } else { super.encodeMetaComponent(context, component, metaComponentId); } }
@Override public void handleValidatorError(final RequestContextHolder ctx, final List<ValidatorError> errors) { FacesContext context = FacesContext.getCurrentInstance(); if (context == null) { PartialViewContext partialViewContext = context.getPartialViewContext(); if (partialViewContext.isAjaxRequest() && partialViewContext.isPartialRequest()) { ExternalContext extContext = context.getExternalContext(); extContext.setResponseContentType("text/xml"); extContext.addResponseHeader("Cache-Control", "no-cache"); PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter(); writer.startDocument(); writer.startError("Invalid request"); for (ValidatorError error : errors) { writer.write(" Type:" + error.getType()); writer.write(", Param:" + error.getParameterName()); writer.write(", Value:" + error.getParameterValue()); writer.endError(); writer.endDocument(); context.responseComplete();
private void handlePartialResponseError(FacesContext context, Throwable t) { if (context.getResponseComplete()) { return; // don't write anything if the response is complete ExternalContext extContext = context.getExternalContext(); extContext.setResponseContentType(RIConstants.TEXT_XML_CONTENT_TYPE); extContext.addResponseHeader("Cache-Control", "no-cache"); PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter(); writer.startDocument(); writer.startError(t.getClass().toString()); String msg; if (context.isProjectStage(ProjectStage.Production)) { writer.write(((msg != null) ? msg : "")); writer.endError(); writer.endDocument();
public void end(ResponseWriter writer, FacesContext context, UIComponent component, Object[] params) throws IOException { writer.endElement(HtmlConstants.TD_ELEM); writer.endElement(HtmlConstants.TR_ELEMENT); writer.endElement(HtmlConstants.TFOOT_ELEMENT); boolean partial = (Boolean) (Boolean) params[0]; if (partial) { context.getPartialViewContext().getPartialResponseWriter().endUpdate(); } } };
protected void redirectJSF2PartialResponse(FacesContext facesContext, ResourceResponse resourceResponse, String url) throws IOException { resourceResponse.setContentType("text/xml"); resourceResponse.setCharacterEncoding("UTF-8"); PartialResponseWriter partialResponseWriter; ResponseWriter responseWriter = facesContext.getResponseWriter(); if (responseWriter instanceof PartialResponseWriter) { partialResponseWriter = (PartialResponseWriter) responseWriter; } else { partialResponseWriter = facesContext.getPartialViewContext().getPartialResponseWriter(); } partialResponseWriter.startDocument(); partialResponseWriter.redirect(url); partialResponseWriter.endDocument(); facesContext.responseComplete(); }
@Override public void endDocument() throws IOException { FacesContext context = FacesContext.getCurrentInstance(); PrimeRequestContext requestContext = PrimeRequestContext.getCurrentInstance(context); if (requestContext != null) { try { if (context.isValidationFailed()) { requestContext.getCallbackParams().put("validationFailed", true); } encodeCallbackParams(requestContext.getCallbackParams()); encodeScripts(requestContext); } catch (Exception e) { throw new AbortProcessingException(e); } } wrapped.endDocument(); }
public void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId) throws IOException { if (AbstractTooltip.CONTENT_META_COMPONENT_ID.equals(metaComponentId)) { AbstractTooltip tooltip = (AbstractTooltip) component; PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter(); writer.startUpdate(tooltip.getClientId(context) + ":" + AbstractTooltip.CONTENT_META_COMPONENT_ID); encodeContentBegin(writer, context, tooltip); for (UIComponent child : tooltip.getChildren()) { child.encodeAll(context); } encodeContentEnd(writer, context, tooltip); writer.endUpdate(); } }
private void renderEvalScripts(FacesContext context) throws IOException { PartialViewContext pvc = context.getPartialViewContext(); PartialResponseWriter writer = pvc.getPartialResponseWriter(); for (String evalScript : pvc.getEvalScripts()) { writer.startEval(); writer.write(evalScript); writer.endEval(); } }
protected void sendAjaxRedirectInternal(final String targetUrl, final HttpServletRequest request, final HttpServletResponse response, boolean popup) throws IOException { // Ideally facesContext.getExternalContext().redirect() should be used instead of the code in this method. // However PartialViewContextImpl.createPartialResponseWriter() calls cxt.getRenderKit(), which in turn // tries to get the UIViewRoot's renderKitId. That results in NPE when JsfAjaxHandler is called // outside of flow execution. The code below wraps the FacesContext to override getRenderKit() and provide a // default render kit id. FacesContextHelper helper = new FacesContextHelper(); try { FacesContext facesContext = helper.getFacesContext(getServletContext(), request, response); PartialResponseWriter writer = createPartialResponseWriter(facesContext); writer.startDocument(); writer.redirect(response.encodeRedirectURL(targetUrl)); writer.endDocument(); } finally { helper.releaseIfNecessary(); } }
private void renderAjaxError(PartialResponseWriter partialWriter, Throwable ex) throws IOException { partialWriter.startError(ex.getClass().getName()); if (ex.getCause() != null) { partialWriter.write(ex.getCause().toString()); } else if (ex.getMessage() != null) { partialWriter.write(ex.getMessage()); } partialWriter.endError(); }
@Override public void startDocument() throws IOException { wrapped.startDocument(); }
private void runScripts() { String scripts = JavaScriptRunner.collateScripts(facesContext); if (scripts.length() > 0) { try { PartialResponseWriter partialWriter = getPartialResponseWriter(); partialWriter.startEval(); partialWriter.write(scripts); partialWriter.endEval(); } catch (IOException e) { throw new RuntimeException(e); } } }
@Override public void redirect(String url) throws IOException { wrapped.redirect(url); }