这个是前端把后端提交数据变成树形:是第一种方法(爱苗老师提供指导,谢谢!)
数据库结构
exttree.js
/**
* @author ZMZY
*
* @requires jQuery,EasyUI
*
* 扩展tree,使其支持平滑数据格式
*/
$.fn.tree.defaults.loadFilter = function(data, parent) {
var opt = $(this).data().tree.options;
var idFiled, textFiled, parentField;
if (opt.parentField) {
idFiled = opt.idFiled || 'id';
textFiled = opt.textFiled || 'text';
parentField = opt.parentField;
var i, l, treeData = [], tmpMap = [];
for (i = 0, l = data.length; i < l; i++) {
tmpMap[data[i][idFiled]] = data[i];
}
for (i = 0, l = data.length; i < l; i++) {
if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
if (!tmpMap[data[i][parentField]]['children'])
tmpMap[data[i][parentField]]['children'] = [];
data[i]['text'] = data[i][textFiled];
tmpMap[data[i][parentField]]['children'].push(data[i]);
} else {
data[i]['text'] = data[i][textFiled];
treeData.push(data[i]);
}
}
return treeData;
}
return data;
};
departtree.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>depart-tree</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="<%=path %>/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="<%=path %>/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="<%=path %>/css/style.css">
<script type="text/javascript" src="<%=path %>/easyui/jquery.min.js"></script>
<script type="text/javascript" src="<%=path %>/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=path %>/syvoucher/extTree.js"></script>
<script type="text/javascript" src="<%=path %>/easyui/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="<%=path %>/scripts/function.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
$(function(){
// var data = eval("(" + '${tt}' + ")");
$('#tt').tree({
url:'${pageContext.request.contextPath}/depart_treelist',
parentField:'pid',
onLoadSuccess : function(node, data) {
console.info("node"+node);
console.info(data);
}
});
})
</script>
</head>
<body>
<div class="easyui-panel">
<ul id="tt" class="easyui-tree" ></ul>
</div>
</body>
</html>
departAction.java
public void treelist() {
//List<ChannelTree> ct = channeldao.generateTree();
/*List <ChannelTree> ctl = new ArrayList<ChannelTree>();
System.out.println(ctl);//[]
ctl= channelService.generateTree();
//String resourceTreeJson = com.alibaba.fastjson.JSON.toJSONString(ctl);
try {
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().write(JSON.toJSONString(ctl));
System.out.println(ctl);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
List<Tree> alt = new ArrayList<Tree>();
alt=channelService.departTree();
try {
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().write(JSON.toJSONString(alt));
System.out.println(alt);
//HttpServletRequest request = null;
//request.setAttribute("tt",JSON.toJSONString(alt));
} catch (IOException e) {
e.printStackTrace();
}
}
channelServericeImpl.java
public List<Tree> departTree() {
private IDepartDao departDao;String hql="from Depart ";
List<Depart> LD=departDao.list(hql);//****获取父结点
List<Tree> lt= new ArrayList<Tree>();
for(Depart dept:LD){
Tree tree = new Tree();
tree.setId(dept.getDepartid());
tree.setText(dept.getDepartname());
if(dept.getDept()!=null){
tree.setPid(dept.getDept().getDepartid());
}
lt.add(tree);
}
return lt;
}
IdepartDao.java
package kongque.dao;
import kongque.model.Depart;
public interface IDepartDao extends IBaseDao<Depart>{
}
BaseDao.java
public List<T> list(String hql) {
System.out.println("hql==========");
//this.getSession().createSQLQuery("").list(); //zhixing sqlchaxun
return this.getSession().createQuery(hql).list();
}
Depart.java
package kongque.model;
import java.util.HashSet;
import java.util.List;
import java.util.Set;import javax.persistence.*;
@Entity
@Table(name="kongque_depart")
public class Depart {
private String departid;
private String departname;
//private String parentid;
private Depart dept;
private Set<Depart> depts = new HashSet<Depart>();/*参考 dormitory项目
private List<Depart> deptsnode ;//参考 dormitory项目
public List<Depart> getDeptsnode() {
return deptsnode;
}
public void setDeptsnode(List<Depart> deptsnode) {
this.deptsnode = deptsnode;
}参考 dormitory项目*/
@Id
@GeneratedValue
public String getDepartid() {
return departid;
}
public void setDepartid(String departid) {
this.departid = departid;
}
public String getDepartname() {
return departname;
}
public void setDepartname(String departname) {
this.departname = departname;
}
/*public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid;
}*/
/*
* 父结点
*/
@ManyToOne
@JoinColumn(name="pid")public Depart getDept() {
return dept;
}
public void setDept(Depart dept) {
this.dept = dept;
}
/*
* 子结点
*/
@OneToMany(mappedBy="dept")
public Set<Depart> getDepts(){
return depts;
}
public void setDepts(Set<Depart> depts) {
this.depts = depts;
}
}
Tree.java
package kongque.model;
import java.util.List;
public class Tree implements java.io.Serializable {private String id;
private String text;
private String state = "open";// open,closed
private boolean checked = false;
private Object attributes;
private List<Tree> children;
private String iconCls;
private String pid;public String getId() {
return id;
}public void setId(String id) {
this.id = id;
}public String getText() {
return text;
}public void setText(String text) {
this.text = text;
}public String getState() {
return state;
}public void setState(String state) {
this.state = state;
}public boolean isChecked() {
return checked;
}public void setChecked(boolean checked) {
this.checked = checked;
}public Object getAttributes() {
return attributes;
}public void setAttributes(Object attributes) {
this.attributes = attributes;
}public List<Tree> getChildren() {
return children;
}public void setChildren(List<Tree> children) {
this.children = children;
}public String getIconCls() {
return iconCls;
}public void setIconCls(String iconCls) {
this.iconCls = iconCls;
}public String getPid() {
return pid;
}public void setPid(String pid) {
this.pid = pid;
}}