Programming is an art form.

本博客暂停维护,更多内容欢迎访问:https://javaduqing.github.io

easyui 中 的同步树(3)------用递归写

以上两篇都只能显示有限的节点,如果想要在前台显示无限的节点,就需要用到递归了。这篇文章是基于上一篇的。

我的思路是:

  1. 先找出根节点

  2. 再递归根节点(递归结束的条件是:当此节点没有子节点时,结束递归)


1.数据库表设计和实体类和上一篇是一样的

2.看下DAO层和controller层
第一步:先取得根节点

    public List getAllTree() {
        String hql = "from TAcademy where pid=(select min(pid) from TAcademy)";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);
        return query.list();
    }

第二步:遍历根节点

@RequestMapping("/__getAllTree")
    public String __getAllTree(HttpServletRequest request,HttpServletResponse response)throws Exception{
        List<TAcademy> tree = treeService.getAllTree();
        List<TAcademy> allTree = digui(tree);
        JSONArray jn = JSONArray.fromObject(allTree);
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println(jn.toString());
        return null;
    }


    //递归形成专业树
    public List digui(List<TAcademy> tree){
        for (TAcademy academy : tree){
            if(treeService.getAcademyByPid(academy.getId())!=null){
                List<TAcademy> _tree = treeService.getAcademyByPid(academy.getId());
                academy.setChildren(_tree);
                digui(_tree);
            }
        }
        return tree;
    }

注意:其实不应该把数据库表中id设置问auto,如果设置成auto,那么就会在插入节点的时候出现问题。所以就在数据库中再增加一个字段。

阅读更多
版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/disiwei1012/article/details/51547954
个人分类: js/jquery/easyui
上一篇easyui 中 的同步树(2)
下一篇对象序列化 ObjectInputStream ObjectOutputStream
想对作者说点什么? 我来说一句

easyUI递归生成菜单树

2012年11月01日 2KB 下载

没有更多推荐了,返回首页

关闭
关闭