Jquery EasyUI Tree树形结构的Java实现(实体转换VO)
前一阵做的OA项目,有一个是组织架构的树,因为是分开做的,我做的是Controller和页面,其他组做的Service和Dao,因为之前一直没有商量页面用什么框架做比较好,导致,Dao层取出来的数据都不是Easyui Tree所能识别的,其实后台返回的也是树形的结构,但是他们返回的是name,,而不是Easyui Tree所能识别的text,他们返回的是****,,而不是Easyui Tree所能识别的children,因为别人已经做好了,所以也不方便让别人重新去定义格式,所以我这边只能通过转VO,把Service返回的对象重新进行封装,使之支持Easyui ,话不多说,直接上代码。
这段是VO代码;其中主要的就是ID,text,children,要转的就是这三个
public class OrganizationVo implements Serializable{ private Integer id;
private Integer pid;
private Integer teamId;
private String text;
private String state;
private String leader;
private Integer sort;
private List<OrganizationVo> children; public OrganizationVo(){} public OrganizationVo(Integer id,Integer pid, Integer teamId,String leader,Integer sort,String text,String state, List<OrganizationVo> children) {
this.id = id;
this.pid = pid;
this.teamId = teamId;
this.text = text;
this.sort = sort;
this.leader = leader;
this.state = state;
this.children = children;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public Integer getTeamId() {
return teamId;
} public void setTeamId(Integer teamId) {
this.teamId = teamId;
} public String getText() {
return text;
} public void setText(String text) {
this.text = text;
} public String getLeader() {
return leader;
} public void setLeader(String leader) {
this.leader = leader;
} public Integer getSort() {
return sort;
} public void setSort(Integer sort) {
this.sort = sort;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state;
} public List<OrganizationVo> getChildren() {
return children;
} public void setChildren(List<OrganizationVo> children) {
this.children = children;
} public Integer getPid() {
return pid;
} public void setPid(Integer pid) {
this.pid = pid;
}
}
这个是转换的工具类(只要组织,不带成员)
public class TreeNoteUtil { /**
* 获取父节点菜单
* @param treesList 所有树菜单集合
* @return
*/
public final static List<OrganizationVo> getFatherNode(List<TeamOrganizational> treesList){
List<OrganizationVo> newTrees = new ArrayList<OrganizationVo>(); for (TeamOrganizational teamOrganizational : treesList) {
if (teamOrganizational.getFatherId()==null) {//如果pId为空,则该节点为父节点
//递归获取父节点下的子节点
OrganizationVo newTree = new OrganizationVo();
newTree.setId(teamOrganizational.getId());
newTree.setText(teamOrganizational.getName());
newTree.setTeamId(teamOrganizational.getTeamId()); List<TeamOrganizational> treesLists = teamOrganizational.getSonTeamOrganizationals();
newTree.setChildren(getChildrenNode(teamOrganizational.getId(), treesLists));
newTrees.add(newTree);
}
}
return newTrees;
} /**
* 递归获取子节点下的子节点
* @param pId 父节点的ID
* @param treesLists 所有菜单树集合
* @return
*/
private final static List<OrganizationVo> getChildrenNode(Integer pId, List<TeamOrganizational> treesLists){
List<OrganizationVo> newTrees = new ArrayList<OrganizationVo>(); for (TeamOrganizational mt : treesLists) {
if (mt.getFatherId() != null ) {
if (mt.getFatherId() == pId) {
OrganizationVo newTree = new OrganizationVo();
//递归获取子节点下的子节点,即设置树控件中的children
newTree.setChildren(getChildrenNode(mt.getId(), mt.getSonTeamOrganizationals()));
//设置树控件attributes属性的数据
newTree.setId(mt.getId());
newTree.setText(mt.getName());
newTree.setPid(mt.getFatherId());
newTree.setTeamId(mt.getTeamId());
newTree.setSort(mt.getSort());
newTree.setLeader(mt.getLeader());
newTrees.add(newTree);
}
}
}
return newTrees;
} }
这个是转换的工具类(带组织,带成员)
public class TreeNoteUtil2 { /**
* 获取父节点菜单
* @param treesList 所有树菜单集合
* @return
*/
public final static List<OrganizationVo> getFatherNode(List<TeamOrganizational> treesList){
List<OrganizationVo> newTrees = new ArrayList<OrganizationVo>(); for (TeamOrganizational teamOrganizational : treesList) { if (teamOrganizational.getFatherId()==null) {//如果pId为空,则该节点为父节点
//递归获取父节点下的子节点
OrganizationVo newTree = new OrganizationVo();
newTree.setId(teamOrganizational.getId());
newTree.setText(teamOrganizational.getName());
newTree.setTeamId(teamOrganizational.getTeamId()); List<TeamOrganizational> treesLists = teamOrganizational.getSonTeamOrganizationals();
List<OaUser> treesUserLists = teamOrganizational.getOaUsers();
newTree.setChildren(getChildrenNode(teamOrganizational.getId(), treesLists,treesUserLists));
newTrees.add(newTree);
}
} return newTrees;
} /**
* 递归获取子节点下的子节点
* @param pId 父节点的ID
* @param treesLists 所有菜单树集合
* @return
*/
private final static List<OrganizationVo> getChildrenNode(Integer pId, List<TeamOrganizational> treesLists,List<OaUser> treesUserLists) {
List<OrganizationVo> newTrees = new ArrayList<OrganizationVo>(); for (TeamOrganizational mt : treesLists) {
if (mt.getFatherId() != null) { if (mt.getFatherId() == pId) {
OrganizationVo newTree = new OrganizationVo();
//递归获取子节点下的子节点,即设置树控件中的children
newTree.setChildren(getChildrenNode(mt.getId(), mt.getSonTeamOrganizationals(),treesUserLists));
//设置树控件attributes属性的数据
newTree.setId(mt.getId());
newTree.setText(mt.getName());
newTree.setPid(mt.getFatherId());
newTree.setTeamId(mt.getTeamId());
newTree.setSort(mt.getSort());
newTree.setLeader(mt.getLeader());
if(mt.getOaUsers().size()>0){
newTree.setChildren(getOaUsers(mt.getOaUsers()));
}
newTrees.add(newTree);
}
}
}
if(treesUserLists.size()>0){
for (OaUser oaUser:treesUserLists){
OrganizationVo newTree = new OrganizationVo();
newTree.setId(oaUser.getId());
newTree.setText(oaUser.getRealname());
newTrees.add(newTree);
}
} return newTrees;
} public static List<OrganizationVo> getOaUsers(List<OaUser> oaUsers){
List<OrganizationVo> newTrees = new ArrayList<OrganizationVo>();
if (oaUsers.size()>0){
for (OaUser oaUser:oaUsers){
OrganizationVo newTree = new OrganizationVo();
newTree.setId(oaUser.getId());
newTree.setText(oaUser.getRealname());
newTrees.add(newTree);
}
}else{ }
return newTrees;
} }
代码就这么多,主要是运用了递归的思想,因为在你不知道有多少层级的情况下,还是用递归比较方便,虽然循环比递归的速度快,占用内存小,但递归还是有其优势的;
同时,仔细看那两个工具类,第二个工具类比第一个工具类多了添加员工的操作,但是这里就不会使用递归了,因为员工下面不会再有员工了,为什么我会强调这个,因为我先写的是第一个工具类,总想着如何递归,写第二个的时候,人员总是重复添加,好久都找不到原因,后来才忽然想到,员工下面是没有员工的,于是恍然大悟。。。。
Jquery EasyUI Tree树形结构的Java实现(实体转换VO)的更多相关文章
- Jquery easyui tree的使用
这个ui用的一切都是json数据.树也是如此! 后台需要返回与格式匹配的json数据才能正确加载树. 页面定义一个ui: <ul id="messageInfoAddTree" ...
- 使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
看到ztree.js,这几个字眼,毋庸置疑,那肯定就是tree树形结构了,曾经的swing年代有jtree,后来jquery年代有jstree和treeview,虽然我没写过,但是我见过,一些小功能做 ...
- Jquery easyui Tree的简单使用
Jquery easyui Tree的简单使用 Jquery easyui 是jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻 ...
- EasyUI之树形结构tree
转自:https://blog.csdn.net/ya_1249463314/article/details/70305730 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...
- salesforce 零基础学习(七十)使用jquery table实现树形结构模式
项目中UI需要用到树形结构显示内容,后来尽管不需要做了,不过还是自己做着玩玩,mark一下,免得以后项目中用到. 实现树形结构在此使用的是jquery的dynatree.js.关于dynatree的使 ...
- jquery easyui tree dialog
<script type="text/javascript" src="<%=request.getContextPath()%>/include/ja ...
- Jquery EasyUI Tree .net实例
图片: 针对tree: 数据库: CREATE TABLE [dbo].[SystemModel]( [Id] [,) NOT NULL, [Name] [nvarchar]() NULL, [Fat ...
- Tree 树形结构
一.树的基本概念 (1)树(Tree)的概念:树是一种递归定义的数据结构,是一种重要的非线性数据结构. 树可以是一棵空树,它没有任何的结点:也可以是一棵非空树,至少含有一个结点. (2)根(Root) ...
- Jquery easyui tree 一些常见操作
Tree: easyui tree的异步加载实现很简单,easyui的中文API文档中有实例(http://api.btboys.com/easyui/)——创建异步树形菜单,就是在tree node ...
随机推荐
- Druid学习之路 (五)Druid的数据摄取任务类型
作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9885534.html 转载请注明出处 Druid的数据摄取任务类型 Druid支持很多种类型的数据摄取 ...
- motan rpc
git : 帮助 文档 基本介绍 Motan是一套基于java开发的RPC框架,除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现.摘除.高可用和负载均衡等.Motan具有 ...
- [转]将oracle数据库的编码变成utf-8
1.改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表 Start -> Run -> Rededit <-| Under registry Editor - ...
- 关于JavaScript对象,你所不知道的事(二)- 再说属性
说完了对象那些不常用的冷知识,是时候来看看JavaScript中对象属性有哪些有意思的东西了. 不出你所料,对象属性自然也有其相应的特征属性,但是这个话题有点复杂,让我们先从简单的说起,对象属性的分类 ...
- JAVA多线程本质分析
多线程是Java开发中的重中之重,其重要性和难度,可见一斑.掌握并精通多线程开发,是每一个程序员的必修之课.哪怕中间的过程很痛苦,只要坚持了,并最终豁然开朗了,都是一种升华. 多线程的优化:合理利用C ...
- POJ 1208 模拟
2017-08-28 15:07:16 writer:pprp 好开心,这道题本来在集训的时候做了很长很长时间,但是还是没有做出来,但是这次的话,只花了两个小时就做出来了 好开心,这次采用的是仔细分析 ...
- UVa 11149 矩阵的幂(矩阵倍增法模板题)
https://vjudge.net/problem/UVA-11149 题意: 输入一个n×n矩阵A,计算A+A^2+A^3+...A^k的值. 思路: 矩阵倍增法. 处理方法如下,一直化简下去直到 ...
- SQLite内存数据库操作类
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- word2vector 使用方法 计算语义相似度
参考:http://techblog.youdao.com/?p=915#LinkTarget_699word2vector是一个把词转换成词向量的一个程序,能够把词映射到K维向量空间,甚至词与词之间 ...
- 机器学习经典书籍&论文
原文地址:http://blog.sina.com.cn/s/blog_7e5f32ff0102vlgj.html 入门书单 1.<数学之美>PDF6 作者吴军大家都很熟悉.以极为通俗的语 ...