后台代码:
/**
* 返回数据用于zTree控件树状图显示
* @return
*/
@ResponseBody
@RequestMapping("getMenuJson")
public List<Map<Object,Object>> getJson(){
List<Menu> list=menuService.findList();
List<Map<Object,Object>>mapList= new ArrayList<>();
for(int i=0;i<list.size();i++){
Map <Object,Object> map= new HashMap<Object,Object>();
map.put("id", list.get(i).getId());
map.put("name", list.get(i).getName());
map.put("pId", list.get(i).getParentId());
map.put("url", list.get(i).getUrl());
map.put("target", "_blank");
mapList.add(map);
}
System.out.println("异步加载数据成功");
return mapList;
}
前台代码:
/**************异步加载数据************/
var setting4 = {
async: {
enable: true,
contentType: "application/json",
url:"${ctx}/a/menu/getMenuJson",
/* autoParam:["id", "name=", "level=lv"], */
otherParam:{"otherParam":"zTreeAsyncTest"},
dataFilter: filter
}
};
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, '.');/* 把回车换成. */
}
console.log(childNodes);
return childNodes;
}
$(document).ready(function(){
zTreeObj = $.fn.zTree.init($("#treeDemo1"), setting4);
});
使用了SpringMVC框架,此处使用zTree插件来异步加载Menu树状菜单,但是获取到的数据为数组格式,如下:
Array(9)
0
:
{name: "新建菜单", pId: 5, id: 3, url: "/a/menu/add", target: "_blank"}
1
:
{name: "菜单列表", pId: 5, id: 4, url: "/a/menu/list", target: "_blank"}
2
:
{name: "菜单管理", pId: 0, id: 5, url: "/a/menu/", target: "_blank"}
3
:
{name: "人员管理", pId: 0, id: 6, url: "/a/user/", target: "_blank"}
4
:
{name: "人员添加", pId: 6, id: 7, url: "/a/user/add", target: "_blank"}
5
:
{name: "人员列表", pId: 6, id: 8, url: "/a/user/list", target: "_blank"}
6
:
{name: "修改密码", pId: 6, id: 9, url: "/a/user/changePW", target: "_blank"}
7
:
{name: "人员添加1", pId: 7, id: 10, url: "#", target: "_blank"}
8
:
{name: "人员添加2", pId: 7, id: 11, url: "#", target: "_blank"}
请问如何解决 解决
直接循环去 “data.name”“data.pId”"data.url"
楼主返回的是List< Map < Object,Object > > 到前台页面就是数组啊!啥问题啊? 树是自己排好的吧?
写一个映射类entity 把数据存入这个对象的list,前台直接获取list不就行了吗...前台要[{}]这样的话 后台@ResponseBody 不就直接返回了吗
如果你是需要这一层的key刚好是下一层的value这种形式,就需要自己后台组装一下,现在这样先通过数组下标取到相应对象,在点属性名也可以取到数据了
没看明白,你是想要什么格式?这个格式不正是zTree的数据格式吗?
@ResponseBody
.........
public String xxxx(){
.......
return "json串";
}
你的list对象不想自己封装json,可以找个三方jar包,直接转换
用jquery的ajax 可以很方便获取数据,后端使用springMVC的吗?
是使用用jquery的ajax 获取数据,后端使用springMVC的吗?
datatype: json qudiao
没有转为json呀,返回的是数组。
var json = eval(xxx)转换下
json和string才是传输的数据的正确格式,其他的容易接受不到;实际啊根本没法接受;
你别直接返回集合了,你先把集合转成json,看看格式是否正确,在返回到页面
1.楼主树的初始化方法不对
zTreeObj = $.fn.zTree.init($("#treeDemo1"), setting4, zTreeNodes);
zTreeNodes是指树形上的节点,楼主都没有传递该参数
2.获取到的数据格式应该是可以直接使用的,因为返回的是数组,内部符合json格式
但形成树需要设置setting4 为简单数据格式,setting4 中添加
data : {
simpleData : {
enable : true
}
}