日期:2014-05-16 浏览次数:20420 次
踩 jstree的简单应用 如果有开发中用的朋友可以交流一下~~ 参见 http://www.jstree.com/ 标签: jstree 代码片段(1) [代码] [JavaScript]代码 view sourceprint? 001 jstree主要是看后台如何组织数据 002 003 java类: 004 005 public class TreeAction extends BaseAction implements IAuthIdGetter, IOperationLog { 006 007 /** 008 * 序列号 009 */ 010 private static final long serialVersionUID = 1L; 011 012 /** 013 * 数据list 014 */ 015 private List<TreeDomain> treeList = new ArrayList<TreeDomain>(); 016 017 /** 018 * 日志相关 019 */ 020 private static LogService logger = LogService.getLogger(OneCMDBTreeAction.class); 021 022 /** 023 * 获取展示树 024 * @return String 025 */ 026 public String showTree() { 027 logger.info(getText("function.title") + getText("log.showTree.begin")); 028 this.parseXml(); 029 logger.info(getText("function.title") + getText("log.showTree.end")); 030 return SUCCESS; 031 } 032 033 /** 034 * @return 035 */ 036 public void parseXml() { 037 try { 038 CMDBUtil cmdb = new CMDBUtil(); 039 // 创建DOM工厂 040 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 041 DocumentBuilder db = dbf.newDocumentBuilder(); 042 String treeXml = cmdb.getXML();// getXML(); 043 logger.info(treeXml); 044 byte source[] = treeXml.getBytes("UTF-8"); 045 InputStream is = new ByteArrayInputStream(source); 046 Document document = db.parse(is); 047 // 显示的节点id 048 String alias = ""; 049 // 树节点要展示的名称 050 String displayName = ""; 051 // 获取所有名称为template的节点 052 NodeList nodeIdList = document.getElementsByTagName("template"); 053 for (int i = 0; i < nodeIdList.getLength(); i++) { 054 Node node = nodeIdList.item(i); 055 // 获取节点要显示的id 056 alias = node.getAttributes().getNamedItem("alias").getNodeValue(); 057 displayName = node.getAttributes().getNamedItem("displayName").getNodeValue(); 058 if ("Ci".equals(alias)) { 059 TreeDomain domain = new TreeDomain(); 060 domain.setDisplayName(displayName); 061 domain.setShowId(alias); 062 domain.setParentId("0"); 063 treeList.add(domain); 064 //调用递归算法 065 findList(alias, nodeIdList); 066 } 067 } 068 } catch (Exception e) { 069 // TODO Auto-generated catch block 070 logger.info("parseXml error :" + e); 071 } 072 } 073 074 /** 075 * 递归获取Ci节点下的所有子节点 076 * @param id "Ci" 077 * @param nodeIdList 078 */ 079 public void findList(String id, NodeList nodeIdList) { 080 for (int i = 0; i < nodeIdList.getLength(); i++) { 081 Node node = nodeIdList.item(i); 082 Node derivedNode = node.getFirstChild().getNextSibling(); 083 if ("derivedFrom".equals(derivedNode.getNodeName())) { 084 // 当前node的id 085 String alias = node.getAttributes().getNamedItem("alias").getNodeValue(); 086 // 当前node的显示名称 087 String displayName = node.getAttributes().getNamedItem("displayName") 088 .getNodeValue(); 089 Node refNode = derivedNode.getFirstChild().getNextSibling(); 090 if (refNode.getAttributes().getNamedItem("alias") != null) { 091 String pid