jQuery ztree实现动态树形多选菜单

2020-05-29 07:06:46易采站长站整理

},
callback: {
beforeClick: beforeClick,
}
};

function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i<l; i++) {
childNodes[i].name = childNodes[i].name.replace(/.n/g, '.');
}
return childNodes;
}
function beforeClick(treeId, treeNode) {
if (!treeNode.isParent) {
alert("请选择父节点,此节点是根节点...");
return false;
} else {
return true;
}
}

$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting);
});
</script>

后台部分,也包含了1的后台,先看核心代码,这个用的struts,哪个框架都差不多。


String flag = request.getParameter("flag");
if(flag.equals("init")){//直接加载ztree
List<Inner> list = getTrees();//得到所有节点
try {
convertListToJson(list);
} catch (Exception e) {
e.printStackTrace();
}
}else if(flag.equals("ajax")){//延迟加载ztree
String id = request.getParameter("id");
if(id==null){//第一次进入初始化父节点
List<Inner> list = new ArrayList<OmRequestImpl.Inner>();
Inner in1=getById(1);
Inner in5=getById(5);
list.add(in1);
list.add(in5);//测试用的,得到初始化0级父节点,应该从数据库中获取。
try {
convertListToJson(list);
} catch (Exception e) {
e.printStackTrace();
}
}else{//根据父节点id加载对应的子节点
List<Inner> list = getChilds(Integer.valueOf(id));//通过父id取得子节点集合,测试就自己写个方法,应该从数据库中获取。
try {
convertListToJson(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}

这里涉及了一些方法,我为了测试方便自己写了个测试bean,正式的直接从数据库中获取。下面是bean及一些小方法。


public class Inner{
private Integer id;
private Integer pId; //指向父节点id
private String name; //显示的内容
private String isParent;//是否是父节点
public Inner(){
this.isParent="false";
}
public String getIsParent() {
return isParent;
}
public void setIsParent(String isParent) {
this.isParent = isParent;
}
public Integer getpId() {
return pId;
}
public void setpId(Integer pId) {
this.pId = pId;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {