jstree 主页 :
http://www.jstree.com/
其中提供了一种从后台取数据渲染成树的形式:
$("#mytree").tree({
data : {
type : "json",
url : "${ctx}/user/power!list.do"
}
});
对于url中返回的值必须是它定义的json数据形式:
$("#demo2").tree({
data : {
type : "json",
json : [
{ attributes: { id : "pjson_1" }, state: "open", data: "Root node 1", children : [
{ attributes: { id : "pjson_2" }, data: { title : "Custom icon", icon : "../media/images/ok.png" } },
{ attributes: { id : "pjson_3" }, data: "Child node 2" },
{ attributes: { id : "pjson_4" }, data: "Some other child node" }
]},
{ attributes: { id : "pjson_5" }, data: "Root node 2" }
]
}
});
这里需要一个从后台实例集合转换为它规定的json数据的形式.
/**
* 无限递归获得jsTree的json字串
*
* @param parentId
* 父权限id 6.8日修改
* @return
*/
private String getJson(long parentId)
{
List<Authority> list = authorityManager.queryByParentId(parentId);
for (int i = 0; i < list.size(); i++)
{
Authority au = list.get(i);
if (au.getIshaschild() == 1)
{
str += "{attributes:{id:\"" + au.getAnid()
+ "\"},state:\"open\",data:\"" + au.getAnname()
+ "\" ,";
str += "children:[";
this.getJson(au.getAnid());
str += "]";
str += " }";
}
else
{
str += "{attributes:{id:\"" + au.getAnid()
+ "\"},state:\"open\",data:\"" + au.getAnname() + "\" "
+ " }";
}
if (i < list.size() - 1)
{
str += ",";
}
}
return str;
}
调用:
- @org.apache.struts2.convention.annotation.Action(results =
- { @Result(name = "success", location = "/main/user/action-list.jsp") })
- public String list()
- {
- String str = "[";
- // 从根开始
- str += this.getJson(0);
- str += "]";
- this.renderJson(str);
- return null;
- }