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