SpringMVC+easyUI生成机构树

背景:
自己搭建了一个SpringMVC+Ibatis的框架。前端技术使用easyUI,正在逐步完善系统功能,初步设计为一个CRM。那么构件机构树是基础部分。
需要:easyUI包,springMVC及相应的Ibatis包。
思路:构建起easyUI所需要的json结构。将数据提交到前台,通过easyUI生成机构树。样例图如下:
SpringMVC+easyUI生成机构树 - 饶为 - 饶为的博客
  详细内容:
   
   
  1. [{
  2. "id":1,
  3. "text":"Folder1",
  4. "iconCls":"icon-save",
  5. "children":[{
  6. "text":"File1",
  7. "checked":true
  8. },{
  9. "text":"Books",
  10. "state":"open",
  11. "attributes":{
  12. "url":"/demo/book/abc",
  13. "price":100
  14. },
  15. "children":[{
  16. "text":"PhotoShop",
  17. "checked":true
  18. },{
  19. "id": 8,
  20. "text":"Sub Bookds",
  21. "state":"closed"
  22. }]
  23. }]
  24. },{
  25. "text":"Languages",
  26. "state":"closed",
  27. "children":[{
  28. "text":"Java"
  29. },{
  30. "text":"C#"
  31. }]
  32. }]
数据库内容:
SpringMVC+easyUI生成机构树 - 饶为 - 饶为的博客
 parentorgid用于判断从属关系、orglevel用来判断展开层级。
核心代码:

//OrgBean,这个是存放javabean的,与数据库相同。

private int orgid;
private int parentorgid;
private String orgname;
private String orgcode;
private int orglevel;

Controller

//根据orgid查询机构信息

public List<OrgBean> getList(int orgid){
List<OrgBean> listorgList = orgService.getOrgById(orgid);//获取机构信息,简单查询select * from....
return listorgList;
}

//对子机构进行递归,若有孩子节点,则继续生成json格式

public JSONArray getJsonArray(List<OrgBean> list) throws JSONException{
JSONArray array = new JSONArray();
JSONObject obj =null;
for (Iterator<OrgBean> it = list.iterator(); it.hasNext();) {
OrgBean object = (OrgBean) it.next();
obj = new JSONObject();
obj.put("id", object.getOrgid());
obj.put("text", object.getOrgname());
obj.put("iconCls", "icon-org");
//obj.put("state", "closed");
//判断是否有孩子节点,如果有孩子节点,递归。
if (getList(object.getOrgid()).size()!=0) {
obj.put("children", getJsonArray(getList(object.getOrgid())));
}
array.put(obj);
}
return array;
}


@ResponseBody
@RequestMapping(value = "/org_tree_json", method = RequestMethod.POST,produces = "application/json; charset=utf-8")
public String createJson(HttpServletRequest request,HttpServletResponse response) {
JSONArray array = new JSONArray();
JSONObject json = new JSONObject();
List<OrgBean> list=null;
//取到头结点
List<OrgBean> listhead = orgService.getOrgByLevel(1);
//循环插入子节点
for (Iterator<OrgBean> iterator = listhead.iterator(); iterator
.hasNext();) {
OrgBean object = (OrgBean) iterator.next();
json.put("id", object.getOrgid());//标识
json.put("text", object.getOrgname());//显示内容
json.put("iconCls", "icon-orgmain");//用于图标
//json.put("state", "closed");
list = getList(object.getOrgid());
if (list.size()!=0) {
//进入方法,递归寻找children
json.put("children", getJsonArray(list));
}
}
array.put(json);//需要注意,最后需要添加到JSONArray中,如果不添加,用sysout打印测试,也会有[],但是这不是easyUI需要的格式。

return array.toString();
}

注意:注解需要加上method = RequestMethod.POST,produces = "application/json; charset=utf-8",返回JSON格式不会出现乱码。
jsp页面

<ul id="tt" class="easyui-tree" data-options="url:'../org/org_tree_json',lines:true,animate:true"></ul>

只需要使用这个ul,加上easyui的特定data-options,则可以完整的展现出来。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值