javascript

位置:IT落伍者 >> javascript >> 浏览文章

基于jsTree的无限级树JSON数据的转换


发布日期:2022年06月22日
 
基于jsTree的无限级树JSON数据的转换

jstree 主页

其中提供了一种从后台取数据渲染成树的形式

$(#mytree)tree({

data:{

type:json

url:${ctx}/user/power!listdo

}

});

对于url中返回的值必须是它定义的json数据形式

$(#demo)tree({

data:{

type:json

json:[

{attributes:{id:pjson_}state:opendata:Rootnodechildren:[

{attributes:{id:pjson_}data:{title:Customiconicon:/media/images/okpng}}

{attributes:{id:pjson_}data:Childnode}

{attributes:{id:pjson_}data:Someotherchildnode}

]}

{attributes:{id:pjson_}data:Rootnode}

]

}

});

这里需要一个从后台实例集合转换为它规定的json数据的形式

/**

*无限递归获得jsTree的json字串

*

*@paramparentId

*父权限id

*@return

*/

privateStringgetJson(longparentId)

{

//把顶层的查出来

List<Action>actions=actionManagerqueryByParentId(parentId);

for(inti=;i<actionssize();i++)

{

Actiona=actionsget(i);

//有子节点

if(agetIshaschild()==)

{

str+={attributes:{id:\+agetAnid()

+\}state:\open\data:\+agetAnname()+\;

str+=children:[;

//查出它的子节点

List<Action>list=actionManagerqueryByParentId(agetAnid());

//遍历它的子节点

for(intj=;j<listsize();j++)

{

Actionac=listget(j);

//还有子节点(递归调用)

if(acgetIshaschild()==)

{

thisgetJson(acgetParentid());

}

else

{

str+={attributes:{id:\+acgetAnid()

+\}state:\open\data:\+acgetAnname()

+\+};

if(j<listsize())

{

str+=;

}

}

}

str+=];

str+=};

if(i<actionssize())

{

str+=;

}

}

}

returnstr;

}

调用

@ornventionannotationAction(results=

{@Result(name=successlocation=/main/user/actionlistjsp)})

publicStringlist()

{

Stringstr=[;

//从根开始

str+=thisgetJson();

str+=];

thisrenderJson(str);

returnnull;

}

其中Action是菜单类或权限类等的实体

效果图

               

上一篇:JScript脚本技术基础

下一篇:利用Javascript建立Web应用