zTree在JAVA项目中的学习

一、创建ZTreeObject实体类,用来接收封装数据库中的数据

public class ZTreeObject{


private String id;
private String pId;
private String name;
private int isDefault;   //为角色分配资源时,构造资源树判断结点是否是默认资源

private boolean checked;
private boolean chkDisabled=false;

public boolean isChkDisabled() {
return chkDisabled;
}
public void setChkDisabled(boolean chkDisabled) {
this.chkDisabled = chkDisabled;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ZTreeObject() {
super();
}
public ZTreeObject(String id, String name) {
super();
this.id = id;
this.name = name;
}
public ZTreeObject(String id, String name, boolean checked) {
super();
this.id = id;
this.name = name;
this.checked = checked;
}
public int getIsDefault() {
return isDefault;
}
public void setIsDefault(int isDefault) {
this.isDefault = isDefault;
}

}

 


public class Module extends TreeObject implements Serializable {
private static final long serialVersionUID = 1L;
private String id; // 模块ID
private String name; // 模块名称
private String superMod;// 上级模块
private String superName; // 上级模块名称
private int sortNo; // 排序
private String isLeaf; // 是否叶子节点
private String isValid; // 是否可用
private String defaultURL;// 默认url
private List<Resource> resources;// 模块对应的资源信息


public Module() {


}


public Module(String id, String name, String superMod, int sortNo, String isLeaf,
String defaultURL) {
this.id = id;
this.name = name;
this.superMod = superMod;
this.sortNo = sortNo;
this.isLeaf = isLeaf;
this.defaultURL = defaultURL;
}


public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public String getSuperMod() {
return superMod;
}


public void setSuperMod(String superMod) {
this.superMod = superMod;
}


public int getSortNo() {
return sortNo;
}


public void setSortNo(int sortNo) {
this.sortNo = sortNo;
}


public String getIsLeaf() {
return isLeaf;
}


public void setIsLeaf(String isLeaf) {
this.isLeaf = isLeaf;
}


public String getDefaultURL() {
return defaultURL;
}


public void setDefaultURL(String defaultURL) {
this.defaultURL = defaultURL;
}


public List<Resource> getResources() {
return resources;
}


public void setResources(List<Resource> resources) {
this.resources = resources;
}


public String getIsValid() {
return isValid;
}


public void setIsValid(String isValid) {
this.isValid = isValid;
}


@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}


@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Module other = (Module) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}


public String getSuperName() {
return superName;
}


public void setSuperName(String superName) {
this.superName = superName;
}

}

二 初始化树


/*

自我理解,后续项目中继续学习:

生成下拉选择树,不带有资源,知识仅仅生成树来展示数据

*/
public class Ztree {


public static List<ZTreeObject> genComboTree(List<?> list,String fieldId,String fieldName,String fieldParent){ 
//==初始化对象列表
List<ZTreeObject> listTree = new ArrayList<ZTreeObject>(); 
for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
ZTreeObject treeObj = new ZTreeObject();
treeObj.setId((String)ReflectionUtils.getFieldValue(object,fieldId));
treeObj.setName((String)ReflectionUtils.getFieldValue(object,fieldName));
if (StringUtils.isNotBlank(fieldParent)) {
treeObj.setpId((String) (ReflectionUtils.getFieldValue(object,
fieldParent)));

if( StringUtils.isBlank( treeObj.getpId() ) ) {
treeObj.setpId("0");
}
listTree.add(treeObj);
}


return listTree;
}

/**
* 生成分配模块资源的JSON树

* @param listAll
* @param listAssign
* @return
*/
public static List<ZTreeObject> genModuleResourceTree(List<Module> listAll,List<Resource> listAssign){ 
//==初始化对象列表
List<ZTreeObject> listTree = new ArrayList<ZTreeObject>(); 
for (Iterator<Module> iterModule = listAll.iterator(); iterModule.hasNext();) {
Module module = iterModule.next();
//==创建Module对象
ZTreeObject treeObj = new ZTreeObject();
treeObj.setId(module.getId());
treeObj.setName(module.getName());
treeObj.setpId(module.getSuperMod());


if( module.getIsLeaf().equals("1") && module.getResources().size()==0 ) {
treeObj.setChkDisabled(true);
}
listTree.add(treeObj);

//==创建Resource对象
if (module.getIsLeaf().equals("1")) {//叶子节点
for (Iterator<Resource> iterRes = module.getResources().iterator(); iterRes.hasNext();) {
Resource res = iterRes.next();
treeObj = new ZTreeObject();
treeObj.setId(res.getId());
treeObj.setName(res.getName());
treeObj.setIsDefault(res.getIsDefault());
treeObj.setpId(module.getId());
if (listAssign.contains(res)) {
treeObj.setChecked(true);
} else 
treeObj.setChecked(false);
listTree.add(treeObj);
}
if(listTree!=null && listTree.size()>0){
ZTreeObject defaultResNode = new ZTreeObject();
//遍历资源树,找到默认资源结点
for(ZTreeObject resNode:listTree){
if("1".equals(resNode.getIsDefault())){
defaultResNode = resNode;
}
}
//如果勾选非默认资源时,自动勾选默认资源结点
for(ZTreeObject resNode:listTree){
if(resNode.isChecked() && defaultResNode!=null && defaultResNode.isChecked()==false){
defaultResNode.setChecked(true);
}
}
//如果取消勾选默认资源结点,则自动取消勾选默认资源结点的兄弟结点
if(defaultResNode!=null && defaultResNode.isChecked()==false){
for(ZTreeObject resNode:listTree){
resNode.setChecked(false);
}
}
}
}
}

return listTree;
}
}

三 前段页面进行调用,生成树

1、进行初始化属性设置

var setting = {
check: {
enable: true,(自动提交父节点的属性参数,异步加载必须设置)
},
data: {
simpleData: {
enable: true
}
},
callback: {
onCheck:onCheck
}
};

具体参数设置可参考:http://www.treejs.cn/v3/api.php

2  发送请求,获取数据

1 异步加载,异步加载时需要自动提交父节点属性的参数,获取当前节点的下级节点信息。

$.ajax({
type:'get',
url:'${ctx.contextPath}/role/resourceTree',
data:{id:'${role.id}'},
dataType:'json',
success:function(data){
var zTreeObj =  $.fn.zTree.init($("#resTree"), setting, data);
var nodes = zTreeObj.getCheckedNodes();
for (var i = 0, l = nodes.length; i < l; i++) {
zTreeObj.checkNode(nodes[i], true, true);
}
}
});

页面标签:<div>
<ul id="resTree" class="ztree" style="width:100%;height:250px"></ul>
</div>

2 同步加载例子

[
    {
        "id": "1",
        "name": "高额话费",
        "pid": "0"
    },
    {
        "id": "100",
        "name": "实时话费高额",
        "pid": "1"
    }
]

只要三个字段就可以了 id   name  pid


function initEventListZtree(){
var treeSetting = {
async:{
type:'post',
enable:true,//虽然是同步,但是这里要写true才回调用方法  否则方法无效
url:path+'/btnTelExpenseServeAction.do?act=getEventList'
},
callback: {
onClick:zTreeOnClickEventList

},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid",
rootPId: "0"//根节点的pid
}
}
}
$.fn.zTree.init($("#eventList"),treeSetting,null);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值