public static void renderChildren(FacesContext facesContext, UIComponent component) throws IOException { List children = component.getChildren(); for (int j=0, size = component.getChildCount(); j<size; j++) { UIComponent child = (UIComponent) children.get(j); renderChild(facesContext, child); } }
public String extractText(FacesContext context, UIComponent child) throws IOException { ResponseWriter response = context.getResponseWriter(); StringWriter stringWriter = new StringWriter(); ResponseWriter cachingResponseWriter = response.cloneWithWriter(stringWriter); context.setResponseWriter(cachingResponseWriter); JSF.renderChild(context, child); context.setResponseWriter(response); return stringWriter.getBuffer().toString(); }
/** * Helper method for rendering a component (usually on a facescontext with a caching * reponsewriter) * * @param facesContext The faces context to render to * @param component The component to render * @return The textual representation of the component * @throws IOException If the JSF helper class can't render the component */ public static String cmp2String(FacesContext facesContext, UIComponent component) throws IOException { ResponseWriter oldResponseWriter = facesContext.getResponseWriter(); String contentType = oldResponseWriter != null ? oldResponseWriter.getContentType() : DEFAULT_CONTENT_TYPE; String characterEncoding = oldResponseWriter != null ? oldResponseWriter.getCharacterEncoding() : DEFAULT_CHARACTER_ENCODING; RenderKit renderKit = facesContext.getRenderKit(); StringWriter cacheingWriter = new StringWriter(); ResponseWriter newResponseWriter = renderKit.createResponseWriter(cacheingWriter, contentType, characterEncoding); facesContext.setResponseWriter(newResponseWriter); JSF.renderChild(facesContext, component); if (oldResponseWriter != null) { facesContext.setResponseWriter(oldResponseWriter); } cacheingWriter.flush(); cacheingWriter.close(); return cacheingWriter.toString(); }