部门树不显示层级结构,前端后端都没有错误,急急急!!!

来源:7-6 部门列表树型结构界面开发

慕斯卡5022575

2021-01-16

找不到错误了,把源码的dept.jsp拷贝进来也是不显示层级关系!!!

2021-01-16 18:09:25.648 [http-bio-8080-exec-1] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'spring’
2021-01-16 18:09:27.014 [http-bio-8080-exec-1] INFO org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 5.2.4.Final
2021-01-16 18:09:28.769 [http-bio-8080-exec-1] INFO org.springframework.web.servlet.DispatcherServlet - Completed initialization in 3120 ms
2021-01-16 18:09:29.331 [http-bio-8080-exec-1] INFO com.mmall.common.HttpInterceptor - request start. url:/sys/dept/dept.page,params:null
2021-01-16 18:09:31.283 [http-bio-8080-exec-1] INFO com.mmall.common.HttpInterceptor - request complete. url:/sys/dept/dept.page,params:1952
2021-01-16 18:09:31.811 [http-bio-8080-exec-1] INFO com.mmall.common.HttpInterceptor - request start. url:/sys/dept/tree.json,params:null
2021-01-16 18:09:32.424 [http-bio-8080-exec-1] INFO com.mmall.common.HttpInterceptor - request complete. url:/sys/dept/tree.json,params:613

写回答

3回答

Jimin

2021-01-17

你好,字段名称有做调整吗?这时可以跑一下课程里的源代码,看看源代码是否正常展示,这样可以区分是代码问题还是环境问题,缩小问题范围。如果后端接口返回正常,那么可能是前端字段和后端不匹配,如果后端接口返回有问题,查你贴的这些的细节就行了

0
1
慕斯卡5022575
谢谢老师,解决了,是后端代码问题。。。
2021-01-17
共1条回复

慕斯卡5022575

提问者

2021-01-16

//把部门列表转换成树形结构方法,不停的用递归方法把树形结构组装起来
public List<DeptLevelDto> deptListToTree(List<DeptLevelDto> deptLevelList){
   if(CollectionUtils.isEmpty(deptLevelList)){
       return Lists.newArrayList();
   }
   //level -->[dept1,dept2....]
   //基本的数据结构初始化
   Multimap<String,DeptLevelDto> levelDeptMap = ArrayListMultimap.create();
   List<DeptLevelDto> rootList = Lists.newArrayList();

   for(DeptLevelDto dto : deptLevelList){
       levelDeptMap.put(dto.getLevel(),dto);
       if(LevelUtil.ROOT.equals(dto.getLevel())){
           rootList.add(dto);
       }
   }
   //同一级部门排序,按照seq从小到大排序
   Collections.sort(rootList, new Comparator<DeptLevelDto>() {
       @Override
       public int compare(DeptLevelDto o1, DeptLevelDto o2) {
           return o1.getSeq() - o2.getSeq();
       }
   });
   //递归生成树
   transformDeptTree(rootList,LevelUtil.ROOT,levelDeptMap);
   return rootList;
}

//把当前排好序的rootList下面的部门进行递归排序
public void transformDeptTree(List<DeptLevelDto> deptLevelList,String level,Multimap<String,DeptLevelDto> levelDeptMap){
   //递归实现
   for(int i = 0 ; i < deptLevelList.size(); i++){
       //遍历该层的每个元素
       DeptLevelDto deptLevelDto = deptLevelList.get(i);
       //处理当前层级的数据
       String nextLevel = LevelUtil.calculateLevel(level,deptLevelDto.getId());
       //处理下一层
       List<DeptLevelDto> tempDeptList = (List<DeptLevelDto>)levelDeptMap.get(nextLevel);
       if(CollectionUtils.isEmpty(tempDeptList)){
           //通过seq进行排序
           Collections.sort(tempDeptList,deptSeqComparator);
           //设置下一层部门
           deptLevelDto.setDeptList(tempDeptList);
           //进入到下一层处理
           transformDeptTree(tempDeptList,nextLevel,levelDeptMap);
       }
   }
}

public Comparator<DeptLevelDto> deptSeqComparator = new Comparator<DeptLevelDto>() {
   @Override
   public int compare(DeptLevelDto o1, DeptLevelDto o2) {
       return o1.getSeq() - o2.getSeq();
   }
};


从数据库取到所有数据后,部门列表转换树形结构的时候,就剩两个顶级部门了,老师看下我这代码有什么问题吗?

0
0

慕斯卡5022575

提问者

2021-01-16

debug跑,数据库的数据都正常取到了,返回到DeptLevelDto后就剩顶级部门了,之后页面显示也就两个部门,没有层级关系。对照一遍部门树代码也没发现问题,程序也没跑出错误。。。。

0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2261 学习 · 1347 问题

查看课程