java中tree的种类

一、最近需要使用树形展示权限,所以研究了一下Java Tree,其实java中有不少Tree展示,具体有如下几种:

1.dtree

2.ztree(国内的,api全中文,我用这个)

3.JTree

4.dhtmlxTree(国外的,种类齐全),网址为:http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml

##以后是我找的还不错的Tree组件,还有很多!

二、我的代码(互联交易平台一版代码,2级树simpleData形式)

1.Action中的代码

Java代码 收藏代码
  1. /**
  2. * 打开角色授权页面
  3. * @return
  4. * @author mengxianjun
  5. * @throws Exception
  6. * @date 2011-4-12 下午01:30:19
  7. */ 
  8. public String openImpower() throws Exception { 
  9.     try 
  10.     { 
  11.         employeeRole = employeeRoleService.queryTEmployeeRole(roleNum); 
  12.          
  13.         userHavePrivSet = employeeRole.getTEmployeePriv(); 
  14.          
  15.         search = new ArrayList(); 
  16.         if(userHavePrivSet != null){ 
  17.             Iterator it = userHavePrivSet.iterator(); 
  18.             for(;it.hasNext();){ 
  19.                 TEmployeePriv e = (TEmployeePriv) it.next(); 
  20.                 search.add(e.getPrivNum()); 
  21.             } 
  22.         } 
  23.          
  24.         //TEmployeePrivList = privService.queryAllPriv_noPage();//查询出系统中所有的权限 
  25.         TEmployeePrivList = privService.queryUnauthorizedPriv_noPage(search);//查询出系统中所有的权限 
  26.          
  27.         successPath = "/jsp/priv/role/impower.jsp"
  28.          
  29.          
  30.         /**合成树--开始**/ 
  31.         List<TMenu> myMenuList = menuDao.queryAll(); 
  32.          
  33.         List<PrivJSON> jsonList = new ArrayList<PrivJSON>(); 
  34.          
  35.         for( int i=0; i<myMenuList.size(); i++ ) 
  36.         { 
  37.             PrivJSON json = new PrivJSON(); 
  38.              
  39.             TMenu menu = myMenuList.get(i); 
  40.              
  41.             json.setId(menu.getId().getMenuId()); 
  42.             json.setpId("0"); 
  43.             json.setName(menu.getMenuName()); 
  44.             json.setOpen(true); 
  45.              
  46.             jsonList.add(json); 
  47.         } 
  48.          
  49.         List<TEmployeePriv> myPrivList = privService.queryAllPriv_noPage(); 
  50.         for( int j=0; j<myPrivList.size();j++ ) 
  51.         { 
  52.             TEmployeePriv priv = myPrivList.get(j); 
  53.             PrivJSON json2 = new PrivJSON(); 
  54.             json2.setId(priv.getPrivNum()); 
  55.             json2.setpId(priv.getMenuId1()); 
  56.             json2.setName(priv.getPrivName()); 
  57.             json2.setPrivNum(priv.getPrivNum()); 
  58.              
  59.             for(int i=0;i<search.size();i++) 
  60.             { 
  61.                 if( priv.getPrivNum().equals(search.get(i)) ) 
  62.                 { 
  63.                     json2.setOpen(true); 
  64.                     json2.setChecked(true); 
  65.                 } 
  66.             } 
  67.              
  68.             jsonList.add(json2); 
  69.         } 
  70.          
  71.         JSONArray myjsonObj = JSONArray.fromObject(jsonList);//将权限集合,转成JSON数组 
  72.         this.getRequest().setAttribute("myjsonObj",myjsonObj); 
  73.          
  74.         return SUCCESS; 
  75.     } 
  76.     catch( Exception e ) 
  77.     { 
  78.         log.error("RoleAction's openImpower() a error: "+ e.fillInStackTrace()); 
  79.         errorPath = "/jsp/error/error.jsp"
  80.         return "error"
  81.     } 
  82.  
  83. /**
  84. * 角色授权
  85. * @return
  86. * @author mengxianjun
  87. * @throws Exception
  88. * @date 2011-4-12 下午01:27:41
  89. */ 
  90. @SuppressWarnings({ "unchecked", "static-access" }) 
  91. public String impower() throws Exception { 
  92.     try 
  93.     { 
  94.         String[] privList = privSelect.split(";"); //获得前台传来的权限Num 
  95.          
  96.         employeeRole = employeeRoleService.queryTEmployeeRole(roleNum); 
  97.          
  98.         Set<TEmployeePriv> mySet = employeeRole.getTEmployeePriv(); 
  99.          
  100.         forOldTRprRecord( mySet );//日志前得到旧权限(修改前的权限集合)--授权 
  101.          
  102.         mySet.clear();//清空权限 
  103.          
  104.         if( null != privList && privList.length>0
  105.         { 
  106.             for( int i=1; i<privList.length; i++ ) 
  107.             { 
  108.                 mySet.add( privService.queryPrivByNum(privList[i]) ); 
  109.             } 
  110.         } 
  111.              
  112.         /**
  113.          * 修改角色的权限
  114.          */ 
  115.         employeeRoleService.updateTEmployeeRoleForImpower(employeeRole); 
  116.          
  117.         employeeRoleCtrl.loadEmployeeRole(); 
  118.         rolePrivCtrl.loadRolePriv(); 
  119.          
  120.         doRolePrivRecord();//记录日志1(修改授权时间、原因)--授权 
  121.          
  122.         doRprRecord();//记录日志2(修改前的权限集合)--授权 
  123.          
  124.         return queryAllRole(); 
  125.     } 
  126.     catch( Exception e ) 
  127.     { 
  128.         log.error("RoleAction's impower() a error: "+ e.fillInStackTrace()); 
  129.         errorPath = "/jsp/error/error.jsp"
  130.         return "error"
  131.     } 

2.js

Java代码 收藏代码
  1. <SCRIPT LANGUAGE="JavaScript"
  2. var zTreeObj; 
  3. var setting = {checkable:true,treeNodeKey:"id",treeNodeParentKey:"pId",isSimpleData:true}; //zTree的参数配置,深入使用请参考 API 文档(参数说明 -- setting 详解) 
  4. /*var zNodes = [
  5. {name:"test1", open:true, nodes:[
  6.     {name:"test1_1"}, {name:"test1_2"}]},
  7. {name:"test2", open:true, nodes:[
  8.     {name:"test2_1"}, {name:"test2_2"}]}
  9. ];*/ //zTree的数据属性,深入使用请参考 API 文档(参数说明 -- zTreeNodes 详解) 
  10.  
  11. var myjsonObj = ${requestScope.myjsonObj}; 
  12. var zNodes = myjsonObj; 
  13.                      
  14. $(document).ready(function(){ 
  15.     zTreeObj = $("#treeDemo").zTree(setting, zNodes); 
  16. }); 
  17.  
  18. function expandAll(expandSign) { 
  19.     zTreeObj.expandAll(expandSign); 
  20.  
  21. function checkAllTreeNode(checked) { 
  22.     var oldNodes = zTreeObj.getNodes(); 
  23.     var oldcheckNum = zTreeObj.getCheckedNodes(checked).length; 
  24.     zTreeObj.checkAllNodes(checked); 
  25.     var newcheckNum = zTreeObj.getCheckedNodes(checked).length; 
  26.     if (newcheckNum != oldcheckNum) zTreeObj.checkAllNodes(checked); 
  27.  
  28. /*测试用树授权*/ 
  29. function testImpower() 
  30.     var temp =""
  31.     var nodes = zTreeObj.getCheckedNodes(); 
  32.     for( var i=0; i<nodes.length; i++ ){ 
  33.         if(nodes[i].privNum != ''){ 
  34.             temp = temp+";"+nodes[i].privNum; 
  35.         } 
  36.     } 
  37.     alert(temp); 
  38.     document.getElementById('privSelect').value=temp; 
  39.  
  40. /*分配运维权限*/ 
  41. function allotYunwei() 
  42.     var privNum = ["sys_config","sys_config_a","sys_config_b"]; 
  43.     for(var i=0;i<privNum.length;i++){ 
  44.         var node = zTreeObj.getNodeByParam("privNum", privNum[i]); 
  45.         node.checked=true
  46.         zTreeObj.updateNode(node,true); 
  47.         //zTreeObj.selectNode(node);//选中指定的节点 
  48.     } 
  49. </SCRIPT> 

3.jsp页面调用

Java代码 收藏代码
  1. </div> 
  2. <div class="zTreeDemoBackground"
  3. <button onclick="expandAll(true);">全展开</button>|<button onclick="expandAll(false);">全关闭</button> 
  4. <button onclick="checkAllTreeNode(true);">全选</button>|<button onclick="checkAllTreeNode(false);">全不选</button> 
  5. <button onclick="testImpower();">测试</button> 
  6. <button onclick="allotYunwei();">运维授权</button><br/><br/> 
  7.     <ul id="treeDemo" class="tree"></ul> 
  8. </div> 

####具体参见附件,在此留作备忘!!

你可能感兴趣的:(java,json,exception,function,String,tree)