/** * 根据状态转换成相应地记录应答格式,注意,因为如果是删除记录不会返回ajax应答,所以 此处不处理删除状态。 * * @param xmlSb * @param pm * @param rows * @param state */ protected void processRecord(StringBuffer xmlSb, RowData data) { StringBuffer rowCountsb = null; int size = data.getRowCount(); for (int i = 0; i < size; i++) { Row row = data.getRow(i); int fieldCount = row.size(); rowCountsb = new StringBuffer(); boolean isEmptyRow = (row instanceof EmptyRow); String recordSign = "<" + EventContextConstant.record + ""; String recordESign = "</" + EventContextConstant.record + ">"; if (isEmptyRow) { recordSign = "<" + EventContextConstant.erecord; recordESign = "</" + EventContextConstant.erecord + ">"; } xmlSb.append(recordSign + " id=\"" + row.getRowId() + "\" "); if (!isNull(row.getParentId())) xmlSb.append(" parentid=\"" + row.getParentId() + ">"); else xmlSb.append(">"); if (!isEmptyRow) { String[] startend = getStartEndByState(row.getState()); xmlSb.append(startend[0]); Object value = null; for (int j = 0; j < fieldCount; j++) { value = row.getValue(j); if (value != null) { // 处理日期时间类型 dingrf if (row.getContent()[j] instanceof UFDate) { value = ((UFDate) row.getContent()[j]).getMillis(); } else if (row.getContent()[j] instanceof UFDateTime) { value = ((UFDateTime) row.getContent()[j]).getMillis(); } else if (row.getContent()[j] instanceof UFLiteralDate) { value = ((UFLiteralDate) row.getContent()[j]).getMillis(); } rowCountsb.append(JsURLEncoder.encode(value.toString(), "UTF-8")); } else rowCountsb.append(EventContextConstant.NULL); if (j < fieldCount - 1) rowCountsb.append(","); } xmlSb.append(rowCountsb); xmlSb.append(startend[1]); // dingrf记录本行中发生修改的列索引 String changedSign = "<" + EventContextConstant.changed + ">"; String changedESign = "</" + EventContextConstant.changed + ">"; xmlSb.append(changedSign); for (int k = 0; k < row.getChangedIndices().size(); k++) { xmlSb.append(row.getChangedIndices().get(k)); if (k < row.getChangedIndices().size() - 1) xmlSb.append(","); } xmlSb.append(changedESign); } xmlSb.append(recordESign + "\n"); } try { Method m = RowData.class.getDeclaredMethod("getDeleteRows", new Class[] {}); m.setAccessible(true); Row[] delRows = (Row[]) m.invoke(data, new Object[] {}); if (delRows != null && delRows.length > 0) { for (int i = 0; i < delRows.length; i++) { xmlSb.append( "<" + EventContextConstant.drecord + " id=\"" + delRows[i].getRowId() + "\"/>"); } } } catch (Exception e) { LfwLogger.error(e); } }