日期:2014-05-16 浏览次数:20515 次
踩 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