将集合生出树展示

1.安装treeview控件,页面导入几个js

<link rel="stylesheet" href="<%=path %>/treeview/jquery.treeview.css" />
<link rel="stylesheet" href="<%=path %>/treeview/screens.css" />
<script src="<%=path %>/treeview/lib/jquery.js" type="text/javascript"></script>
<script src="<%=path %>/treeview/lib/jquery.cookie.js" type="text/javascript"></script>
<script src="<%=path %>/treeview/jquery.treeview.js" type="text/javascript"></script>
<script src="<%=path %>/treeview/jquery.treeview.edit.js" type="text/javascript"></script>

2.定义Node类型

public class Node {
private String id;
private String parentId;
private String name;
private String link;
       set....

      get......

3.将数据从数据库查出存入List<Node>中

 while (rs.next()) {
            Node cate = new Node();
            cate.setId(rs.getString("code"));
            cate.setName(rs.getString("name"));
                cate.setParentId(rs.getString("parcode"));
                nodeList.add(cate);
            }

4.将集合遍历生成树

public class Tree {
private StringBuffer html = new StringBuffer();
private List<Node> nodes;
    List <Node> deleList = new ArrayList<Node>();//存放需要从Nodes中删除的节点
public Tree(List<Node> nodes) {
this.nodes = nodes;
}


public String buildTree() {
html.append("<ul id=\"browser\" class=\"filetree\">");
Node head =nodes.get(0);
html.append("\r\n<li id=\"" + head.getId() + "\" ><span class=\"folder\" οnclick=\"turn("+head.getId()+")\">" + head.getName()
+ "</span></li>");
for (Node node : nodes) {
build(node);
}
html.append("\r\n</ul>");
return html.toString();
}


private void build(Node node) {
List<Node> children = getChildren(node);
if (!children.isEmpty()) {
html.append("\r\n<ul>");
for (Node child : children) {
String id = child.getId();
if(isHasChildren(child.getId())){
html.append("\r\n<li id=\"" + id + "\" ><span class=\"folder\" οnclick=\"parId('"+id+"')\">" + child.getName()
+ "</span></li>");
}else {
html.append("\r\n<li id=\"" + id + "\" ><span class=\"file\" οnclick=\"turn('"+id+"')\" οnmοuseοver=\"this.style.cursor='hand'\">" + child.getName()
+ "</span></li>");
}
deleList.add(child);
build(child);
}
html.append("\r\n</ul>");
}
}
private List<Node> getChildren(Node node) {
List<Node> children = new ArrayList<Node>();
String id = node.getId();
for (Node child : nodes) {
if(!ishas(child.getId())){
 if (id.equals(child.getParentId())) {
children.add(child);
 }
}
}
return children;
}
/**
* 判断是否为deleList集合内的节点
* @param nodesb
* @return
*/
private boolean ishas(String id) {
for(int i=0;i<deleList.size();i++){
 if(deleList.get(i).getId().equals(id)){
 return true;
 }
}
return false;
 
}
/**
* 判断有没有孩子
* @param nodesb
* @return
*/
private boolean isHasChildren(String id) {
for (Node child : nodes) {
if (id.equals(child.getParentId())) {
return  true;
}
}
return false;
 
}
}

5.jsp页面调用Java页面方法

 <%
    Bean bean =Bean.getBean();
    List<Node> node = bean.getSysfuncTree();
    funcTree trees = new  funcTree(node);
%>

<%= trees.buildTree(roleid) %>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值