easyui struts后台实现tree返回json数据

来源:互联网 发布:开实体店淘宝进货 编辑:程序博客网 时间:2024/05/16 17:07

首先jsp页面有一ul用于展现tree

[html] view plaincopy
  1. <ul id="trueULid"></ul>  

加载tree

[javascript] view plaincopy
  1. <script type="text/javascript">  
  2. $(function() {  
  3.    $('#trueULid').tree( {  
  4.      url : 'admin/HhTestTree.do'  
  5.    });  
  6. });  
  7. </script>  

配置action
[html] view plaincopy
  1. <action name="HhTestTree" method="testTree"  
  2.     class="org.bkgd.ehome.jeeplugin.message.web.action.ActionHhMessageTypeQuery">  
  3.     <result type="json">  
  4.         <param name="root">testTreeNodes</param>  
  5.     </result>  
  6. </action>  

需要封装对象tree
[java] view plaincopy
  1. public class TestTreeNode implements Serializable {  
  2.     /** 
  3.      *  
  4.      */  
  5.     private static final long serialVersionUID = 1L;  
  6.     private String id;  
  7.     private String text;  
  8.     private String state = "open";  
  9.     private boolean checked;  
  10.   
  11.     public TestTreeNode(String id, String text, String state, boolean checked) {  
  12.         this.id = id;  
  13.         this.text = text;  
  14.         this.state = state;  
  15.         this.checked = checked;  
  16.     }  
  17.     public String getId() {  
  18.         return id;  
  19.     }  
  20.   
  21.     public void setId(String id) {  
  22.         this.id = id;  
  23.     }  
  24.   
  25.     public String getText() {  
  26.         return text;  
  27.     }  
  28.   
  29.     public boolean isChecked() {  
  30.         return checked;  
  31.     }  
  32.   
  33.     public void setChecked(boolean checked) {  
  34.         this.checked = checked;  
  35.     }  
  36.   
  37.     public void setText(String text) {  
  38.         this.text = text;  
  39.     }  
  40.   
  41.     public String getState() {  
  42.         return state;  
  43.     }  
  44.   
  45.     public void setState(String state) {  
  46.         this.state = state;  
  47.     }  
  48. }  

表结构如图

首先查询所有parentid为NONE的数据(测试数组件的ID为null)然后同时判断该节点下是否有子节点,
如果有则状态是关闭状态
当继续展开树的时候 会将该ID值传入,然后查询该节点的子节点。


action方法实现

[java] view plaincopy
  1. private List<TestTreeNode> testTreeNodes = new ArrayList<TestTreeNode>();  
  2. private String id;// 树组件使用的ID  
  3.   
  4. public String testTree() {  
  5.     try {  
  6.         List<Map<String,Object>> list = aloneIMP.getTreeNodes(id).search().getResultList();  
  7.         for(Map<String,Object> m:list){  
  8.             //判断是否有子节点  
  9.             List<Map<String,Object>> isHasChildren = aloneIMP.getTreeChildren(null).addUserWhere(" and parentid ='"+(String)m.get("ID")+"'").search().getResultList();  
  10.             if(isHasChildren.size()==0){  
  11.                 testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"open",false));      
  12.             }else{  
  13.                 testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"closed",false));  
  14.             }  
  15.                       
  16.         }  
  17.     } catch (SQLException e) {  
  18.         e.printStackTrace();  
  19.     }  
  20.     return SUCCESS;  
  21. }  

此方法不具公共性,是自己的一些封装实现。主要是如何进行查询节点,

getTreeNodes()的实现方法为:

[java] view plaincopy
  1. @Override  
  2. public DataQuery getTreeNodes(String id) {  
  3.     if(id==null){  
  4.         dbQuery = DataQuery  
  5.         .init(  
  6.                 query,  
  7.                 "hh_message_type",  
  8.                 "ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = 'NONE'");  
  9.     }else{  
  10.         dbQuery = DataQuery  
  11.         .init(  
  12.                 query,  
  13.                 "hh_message_type",  
  14.                 "ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = '"+id+"'");  
  15.     }  
  16.       
  17.     return dbQuery;  
  18. }  

getTreeChildren()的实现方法为:

[java] view plaincopy
  1. @Override  
  2.     public DataQuery getTreeChildren(DataQuery query) {  
  3.         DataQuery dbQuery = DataQuery  
  4.             .init(  
  5.                     query,  
  6.                     "hh_message_type",  
  7.                     "ID,STATE,PARENTID,NAME,TITLE");  
  8.         return dbQuery;  
  9.     }  

实现效果图为:

0 0
原创粉丝点击