关闭

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

标签: easyui递归tree同步树
594人阅读 评论(0) 收藏 举报
分类:

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

我的思路是:

  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,那么就会在插入节点的时候出现问题。所以就在数据库中再增加一个字段。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:86412次
    • 积分:2284
    • 等级:
    • 排名:第18142名
    • 原创:138篇
    • 转载:53篇
    • 译文:0篇
    • 评论:7条
    博主
    博客专栏
    最新评论