public String getRequirementJson() { List<RequirementEntity> requirementRoots = getRootRequirement(); StringBuffer buff = new StringBuffer(); StringBuffer b = new StringBuffer(); // for (RequirementEntity root : requirementRoots) { // b.append(recursionFn(root, buff)); // } for (int i = 0; i < requirementRoots.size(); i++) { RequirementEntity root = requirementRoots.get(i); if (i != requirementRoots.size() - 1) { b.append(recursionFn(root, buff)); b.append(","); } else { b.append(recursionFn(root, buff)); } } return b.toString(); } public JSONObject recursionFn(RequirementEntity root, StringBuffer json) { List<RequirementEntity> childList = getChildList(root); if (childList.size() > 0) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", root.getId()); jsonObject.put("aprvStatus", root.getAprvStatus()); jsonObject.put("createDt", DateUtil.parseDate(root.getCreateDt(), "dd/MM/yyyy")); jsonObject.put("createdBy", root.getCreatedBy()); jsonObject.put("parentId", root.getParentId()); jsonObject.put("histVer", root.getHistVer()); jsonObject.put("reqDesc", root.getReqDesc()); jsonObject.put("reqPriority", root.getReqPriority()); jsonObject.put("uiProvider", "col"); jsonObject.put("reqTitle", root.getReqTitle()); jsonObject.put("iconCls", "task-folder"); jsonObject.put("updateDt", root.getUpdateDt()); jsonObject.put("updatedBy", root.getUpdatedBy()); JSONObject children = new JSONObject(); List<JSONObject> jsonArray = new ArrayList<JSONObject>(); for (int i = 0; i < childList.size(); i++) { RequirementEntity childEntity = childList.get(i); children = recursionFn(childEntity, json); jsonArray.add(i, children); } jsonObject.put("children", jsonArray); json.append(jsonObject.toString()); return jsonObject; } else { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", root.getId()); jsonObject.put("aprvStatus", root.getAprvStatus()); jsonObject.put("createDt", DateUtil.parseDate(root.getCreateDt(), "dd/MM/yyyy")); jsonObject.put("createdBy", root.getCreatedBy()); jsonObject.put("parentId", root.getParentId()); jsonObject.put("histVer", root.getHistVer()); jsonObject.put("reqDesc", root.getReqDesc()); jsonObject.put("reqPriority", root.getReqPriority()); jsonObject.put("uiProvider", "col"); jsonObject.put("reqTitle", root.getReqTitle()); jsonObject.put("iconCls", "task"); jsonObject.put("updateDt", root.getUpdateDt()); jsonObject.put("updatedBy", root.getUpdatedBy()); jsonObject.put("leaf", true); json.append(jsonObject.toString()); return jsonObject; } } public List<RequirementEntity> getChildList(RequirementEntity nodeEntity) { List<RequirementEntity> childList = requirementDAO .findByParentId(nodeEntity.getId()); return childList; }
Gwt-ext 递归生成 ColumnTree 的JSON,方法有待优化。
JSON生产成功,页面多次显示不出来的原因:JSON中忘了添加
jsonObject.put("uiProvider", "col");