说明:此方法只适合于两层树的情况!

1. 一次性加载和异步加载前端的区别很简单:Ext.tree.AsyncTreeNode

2. json格式数据的区别:异步加载不需要children标签;一次性加载需要,否则的话leaf必须为true。一次性加载的json数据格式如下:

 

[

  {"children":[

{"children":[],"iconCls":"treeNodeLeafIcon","id":21,"leaf":true, "linkUrl":"/countInjure.jsp","parentId":20,"text":"基本信息" }

               ],

"iconCls":"treeNodePackageIcon",

"id":20,"leaf":false,"linkUrl":"","parentId":1,"text":"统计报表"

   }

]

3.PO类文件(get set方法省略)

  private Integer id;

private String text;

private Boolean leaf;

private String linkUrl;

private Integer parentId;

private String iconCls;

private List<TreeNode> children;

4.controller类文件,主要代码

  list = treenodeBiz.getTreeNodeById(node);

for(TreeNode tn :list){

            if(!tn.getLeaf()){

                tn.setChildren(treenodeBiz.getTreeNodeById(tn.getId().toString()));

            }

            _list.add(tn);

        }

  JSONArray ja = JSONArray.fromObject(_list); 

  String json = ja.toString();

  这里用到了json-lib工具!