private void writeOut( PageContext pc, DumpData data, Writer writer, boolean expand, boolean inside) throws IOException { if (data == null) return; if (!(data instanceof DumpTable)) { writer.write(StringUtil.escapeHTML(data.toString())); return; } DumpTable table = (DumpTable) data; // prepare data DumpRow[] rows = table.getRows(); int cols = 0; for (int i = 0; i < rows.length; i++) if (rows[i].getItems().length > cols) cols = rows[i].getItems().length; TemplateLine tl = null; if (!inside) tl = SystemUtil.getCurrentContext(); String context = tl == null ? "" : tl.toString(); if (rows.length == 1 && rows[0].getItems().length == 2) { DumpData d = rows[0].getItems()[1]; if (!(d instanceof DumpTable)) { writer.write(StringUtil.escapeHTML(d.toString())); return; } } writer.write( "<table cellpadding=\"1\" cellspacing=\"0\" " + (table.getWidth() != null ? " width=\"" + table.getWidth() + "\"" : "") + "" + (table.getHeight() != null ? " height=\"" + table.getHeight() + "\"" : "") + " border=\"1\">"); // header if (!StringUtil.isEmpty(table.getTitle())) { writer.write("<tr><td title=\"" + context + "\" colspan=\"" + cols + "\">"); // isSetContext=true; String contextPath = ""; pc = ThreadLocalPageContext.get(pc); if (pc != null) { contextPath = pc.getHttpServletRequest().getContextPath(); if (contextPath == null) contextPath = ""; } writer.write( "<b>" + (!StringUtil.isEmpty(table.getTitle()) ? table.getTitle() : "") + "</b>" + (!StringUtil.isEmpty(table.getComment()) ? "<br>" + table.getComment() : "") + "</td></tr>"); } // items DumpData value; for (int i = 0; i < rows.length; i++) { writer.write("<tr>"); DumpData[] items = rows[i].getItems(); // int comperator=1; for (int y = 0; y < cols; y++) { if (y <= items.length - 1) value = items[y]; else value = new SimpleDumpData(" "); // comperator*=2; if (value == null) value = new SimpleDumpData("null"); // else if(value.equals(""))value=" "; if (!inside) { writer.write("<td title=\"" + context + "\">"); } else writer.write("<td>"); writeOut(pc, value, writer, expand, true); writer.write("</td>"); } writer.write("</tr>"); } // footer writer.write("</table>"); }