將同級別的數據轉化爲不一樣樹級別的easyUI數據 1. serviceimp層業務的實現 2.controller控制轉換 3.jsp經過json接收
1 serviceimp層業務的實現
@Override
public List<TreeNode> getTreeNodesFromMenuList (List<TPermission> menus) {
List<TPermission> menuOne = new ArrayList<TPermission>();
//處理一級菜單
for (TPermission tp : menus) {
if (tp.getPid() == 0) {
menuOne.add(tp);
}
}
//處理二級菜單
for (TPermission tp : menus) {
int pid = tp.getPid();
TPermission tpp = null;
if (pid != 0) {
for (TPermission tp1 : menuOne) {
if (tp1.getId() == pid) {
tpp = tp1;
break;
}
}
tpp.getChildren().add(tp);
}
}
Collections.sort(menuOne);
for (TPermission tp : menuOne) {
Collections.sort(tp.getChildren());
}
List<TreeNode> treeNodes = transfer(menuOne);
return treeNodes;
}
private List<TreeNode> transfer(List<TPermission> tp) {
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
TreeNode tn = null;
for (TPermission tp1 : tp) {
tn = new TreeNode();
tn.setId(tp1.getId());
tn.setText(tp1.getName());
tn.getAttributes().put("url", tp1.getUrl());
if (tp1.getChildren().size() != 0) {
tn.setState("closed");
tn.setChildren(transfer(tp1.getChildren()));
} else {
tn.setState("open");
}
treeNodes.add(tn);
}
return treeNodes;
}node
} json
2 controller層控制轉換和與jsp交互
@RequestMapping(value = "getMenu", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public List<TreeNode> getUserMenu() {
List<TreeNode> treeNodes = null;
// 獲取到當前主體
Subject subject = SecurityUtils.getSubject();
// 由當前主體獲取到其首要身份信息
SysUser user = (SysUser) subject.getPrincipals().getPrimaryPrincipal();
// 獲取該用戶的菜單
List<TPermission> menuList = user.getMenus();
// 將Tpermission的集合轉換爲TreeNode的集合,返回
treeNodes = menuService.getTreeNodesFromMenuList(menuList);
return treeNodes;
}app
3 .前段接收時json
<script>
$(function(){
//當頁面加載完畢以後,初始化樹
$('#myTree').tree({
url:'<%=basePath%>getMenu.do',
onClick:function(node){
alert(node.attributes.url);
if ($('#myTree').tree('isLeaf',node.target)) {
$("#myTabs").tabs('add',{
title:node.text,
href:"<%=basePath%>" + node.attributes.url,
closable:true,
iconCls:'icon-ok'
});
}/* else {
alert("父節點:" + node.text);
} */
}
});
});
</script>jsp