jsfdeveloperaidservlet.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 841 行 · 第 1/2 页
JAVA
841 行
//need view for resolving property bundles. context.setViewRoot(uiViewRoot); printEvaluated(context, request, out, valueExpression, viewId, phaseId); out.println("<br/>"); out.println("<em><a href=\"" + request.getContextPath() + "/caucho.jsf.developer.aid;jsessionid=" + session.getId() + "?viewId=" + viewId + "&phaseId=" + phaseId + "\">" + "<<< Back" + "</a></em>"); } else if (phaseId == null) { out.println("<table>"); out.println("<thead>"); out.println( "<tr><td colspan=\"2\" align=\"center\"><strong>Snoop</strong></td></tr>"); out.println( "<tr><td><strong>Name</strong></td><td><strong>Value</strong></td></tr>"); out.println("</thead>"); out.println("<tbody>"); //headers out.println( "<tr><td colspan=\"2\" align=\"center\"><em>Headers</em></td></tr>"); Map<String, String> headers = snapshot.getHeaderMap(); for (String header : headers.keySet()) { String value = headers.get(header); out.println("<tr><td><em>" + header + "</em></td><td><em>" + value + "</em></td></tr>"); } //parameters out.println( "<tr><td colspan=\"2\" align=\"center\"><em>Parameters</em></td></tr>"); Map<String, String> parameters = snapshot.getParameterMap(); for (String parameter : parameters.keySet()) { String value = parameters.get(parameter); out.println("<tr><td><em>" + parameter + "</em></td><td><em>" + value + "</em></td></tr>"); } out.println("</tbody>"); out.println("</table>"); } else { out.println(" <div id=\"view\">"); printComponentTree(request, out, viewRoot, null, viewId, phaseId, 0); out.println(" </div>"); //snoop out.println(" <table>"); out.println(" <thead>"); out.println( " <tr><td colspan=\"2\" align=\"center\"><strong>Snoop</strong></td></tr>"); out.println( " <tr><td><strong>Name</strong></td><td><strong>Value</strong></td></tr>"); out.println(" </thead>"); out.println(" <tbody>"); //request out.println( " <tr><td colspan=\"2\" align=\"center\"><em>Request</em></td></tr>"); printBeanMap(out, viewRoot.getRequestMap()); //session out.println( " <tr><td colspan=\"2\" align=\"center\"><em>Session</em></td></tr>"); printBeanMap(out, viewRoot.getSessionMap()); //application out.println( " <tr><td colspan=\"2\" align=\"center\"><em>Application</em></td></tr>"); printBeanMap(out, viewRoot.getApplicationMap()); out.println(" </tbody>"); out.println(" </table>"); } out.println(" </div>"); printControls(out, request, session); out.println(" </body>"); out.println("</html>"); } out.flush(); } catch (IOException e) { throw e; } finally { if (context != null) context.release(); FacesContext.setCurrentInstance(oldContext); } } private void printBeanMap(PrintWriter out, Map<String, JsfDeveloperAid.Bean> map) { for (String key : map.keySet()) { JsfDeveloperAid.Bean bean = map.get(key); if (bean == null) { out.println(" <tr><td><em>" + key + "</em></td><td><em>null</em></td></tr>"); } else if (bean.isSimple()) { out.println(" <tr><td><em>" + key + "</em></td><td><em>" + bean.getClassName() + '(' + bean.getToString() + ')' + "</em></td></tr>"); } else if (bean.isArray()) { out.println(" <tr><td><em>" + key + "</em></td><td><em>" + bean.getClassName() + '[' + bean.getLength() + ']' + "</em></td></tr>"); } else { out.print(" <tr><td><em>" + key + "</em></td><td><em>" + bean.getClassName() + '(' + bean.getToString() + ')'); out.print(": </em>"); Map<String, String> beanAttributes = bean.getAttributes(); if (beanAttributes != null) { for (String attribute : beanAttributes.keySet()) { out.print("<br/> <em>" + attribute + "</em>="); String value = beanAttributes.get(attribute); if (value == null) { out.print("<em>null</em>"); } else { out.print("<em>"); printEscaped(out, value); out.print("</em>"); } } } out.println("</td></tr>"); } } } private void serveAidMap(Map<String, com.caucho.jsf.dev.JsfDeveloperAid.JsfRequestSnapshot> aidMap, ServletResponse res) throws IOException { res.setContentType("application/x-caucho-jsf-developer-aid"); Hessian2Output out = new Hessian2Output(res.getOutputStream()); out.writeObject(aidMap); out.flush(); } private void printEvaluated(FacesContext context, HttpServletRequest request, PrintWriter out, String expression, String viewId, String phaseId ) throws UnsupportedEncodingException { ELContext elContext = context.getELContext(); ValueExpression valueExpression = context.getApplication() .getExpressionFactory() .createValueExpression(elContext, expression, Object.class); Object obj = valueExpression.getValue(elContext); out.print("<strong>"); out.print(expression); out.print("</strong>="); if (obj == null) { out.println("null"); out.println("<br/>"); } else { if (obj instanceof String || obj instanceof Boolean || obj instanceof Character || obj instanceof Number || obj instanceof Date ) { out.println(obj.toString()); } else { out.print("<strong>"); out.print(obj.getClass().toString()); out.print("[" + obj.toString() + "]"); out.println("</strong>"); Field []fields = obj.getClass().getDeclaredFields(); out.println("<br/>"); for (Field field : fields) { try { field.setAccessible(true); Object value = field.get(obj); out.print(" "); printAttribute(request, out, field.getName(), String.valueOf(value), viewId, phaseId); out.println("<br/>"); } catch (IllegalAccessException e) { } } } } } private void printComponentTree(HttpServletRequest request, PrintWriter out, com.caucho.jsf.dev.JsfDeveloperAid.Component component, String facetName, String viewId, String phaseId, int depth) throws UnsupportedEncodingException { for (int i = 0; i < depth * 3; i++) out.print(" "); out.print("<<strong>" + component.getUiComponentClass() + "</strong>"); printAttribute(request, out, "clientId", component.getClientId(), viewId, phaseId); if (component.isValueHolder()) { printAttribute(request, out, "value", component.getValue(), viewId, phaseId); printAttribute(request, out, "localValue", component.getLocalValue(), viewId, phaseId); } if (component.isEditableValueHolder()) printAttribute(request, out, "submittedValue", component.getSubmittedValue(), viewId, phaseId ); if (facetName != null) printAttribute(request, out, "enclosingFacet", facetName, viewId, phaseId); Map<String, String> attributes = component.getAttributes(); if (attributes != null) for (String attr : attributes.keySet()) { String value = attributes.get(attr); if (value != null) printAttribute(request, out, attr, value, viewId, phaseId); } out.println("><br/>"); List<com.caucho.jsf.dev.JsfDeveloperAid.Component> children = component.getChildren(); Map<String, com.caucho.jsf.dev.JsfDeveloperAid.Component> facets = component .getFacets(); if (children != null) for (com.caucho.jsf.dev.JsfDeveloperAid.Component child : children) printComponentTree(request, out, child, null, viewId, phaseId, depth + 1); if (facets != null) for (String facet : facets.keySet()) printComponentTree(request, out, facets.get(facet), facet, viewId, phaseId, depth + 1); } private void printAttribute(HttpServletRequest request, PrintWriter out, String name, String value, String viewId, String phaseId) throws UnsupportedEncodingException { out.print(' '); out.print("<em>" + name); out.print("</em>=\""); if (value == null) out.print("null"); else if (value.indexOf("#{") > -1 && value.indexOf("}") > -1) { out.print("<a href=\"" + request.getContextPath() + "/caucho.jsf.developer.aid;jsessionid=" + request.getSession().getId() + "?viewId=" + viewId + "&phaseId=" + phaseId + "&valueExpression=" + URLEncoder.encode(value, "UTF-8") + "\">" + value + "</a>"); } else printEscaped(out, value); out.print("\""); } public void printEscaped(PrintWriter out, String value) { char []valueChars = value.toCharArray(); boolean wasSpace = false; for (char valueChar : valueChars) { switch (valueChar) { case ' ': wasSpace = true; break; case '\n': if (wasSpace) out.print(' '); wasSpace = false; out.print('\n'); break; case '\r': if (wasSpace) out.print(' '); wasSpace = false; out.print('\r'); break; case '<': if (wasSpace) out.print(' '); wasSpace = false; out.print("<"); break; default: if (wasSpace) out.print(' '); wasSpace = false; out.write(valueChar); } } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?