ztree page
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE> 商城后台管理</TITLE>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/demo.css" type="text/css">
<link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="js/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src="js/jquery.ztree.exedit.js"></script>
<SCRIPT type="text/javascript">
var setting = {
view: {
addHoverDom: addHoverDom,
removeHoverDom: removeHoverDom,
selectedMulti: false
},
async: {
enable: true,
url: "ztree/get",
autoParam: ["id"]
},
edit: {
enable: true,
editNameSelectAll: true,
showRemoveBtn: showRemoveBtn,
showRenameBtn: showRenameBtn
},
data: {
simpleData: {
enable: true,
idKey:"id",
pIdKey:"parent_id",
rootPId:0
}
},
callback: {
onAsyncSuccess : function(event, treeId, treeNode, msg){
},
beforeDrag: beforeDrag,
beforeEditName: beforeEditName,
beforeRemove: beforeRemove,
beforeRename: beforeRename,
onClick: zTreeOnClick
}
};
var zNodes =[];//树节点,json格式,异步加载可设置为null或[]
var zTreeObj;//树对象
//拖拽之前
function beforeDrag(treeId, treeNodes) {
return false;
}
//编辑之前
function beforeEditName(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.selectNode(treeNode);
setTimeout(function() {
if (confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?")) {
setTimeout(function() {
//获取原节点的名称
var oldName=treeNode.nodeName;
alert("old;"+oldName);
zTree.editName(treeNode);
//获取原节点的名称
var newName=treeNode.nodeName;
alert("new;"+newName);
if(newName==""){
//获取父节点
var node=treeNode.getParentNode();
zTree.reAsyncChildNodes(node,"refresh");
alert("名称不能为空!");
}//修改名称相同,不操作
//else if(newName!= treeNode.nodeName){
else if(newName!= oldName){
$.ajax({
url:"ztree/editNodeName",
data:{id:treeNode.id,name:newName,pId:treeNode.pId},
cache:false,
dataType:'JSON',
type:'post',
success:function(data){
if(data.success){
alert(data.msg);
}//修改失败
else{
var node=treeNode.getParentNode();
//回到旧名称
zTree.reAsyncChildNodes(nodes,"refresh")
alert(data.msg);
}
}
})
}
}, 0);
}
}, 0);
return false;
}
//删除之前
function beforeRemove(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.selectNode(treeNode);
//return confirm("确认删除 节点 -- " + treeNode.name + " 吗?");
//父节点不能删除
if(treeNode.pId!=0){
confirm(" 不能删除根节点 :" + treeNode.name + " !");
return false;
}
if(confirm("确认删除 节点 :" + treeNode.name + " 吗?")){
$.post('ztree/deleteByIds?ids='+treeNode.id,function(data){
//删除成功
if(data.success){
//从视角上删除
zTree.removeNode(treeNode);
//真正的删除
alert(data.msg);
}else{
alert(data.msg);
return false;
}
});
}
}
//改名之前
function beforeRename(treeId, treeNode, newName, isCancel) {
if (newName.length == 0) {
setTimeout(function() {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.cancelEditName();
alert("节点名称不能为空.");
}, 0);
return false;
}
return true;
}
//显示删除按钮
function showRemoveBtn(treeId, treeNode) {
return !treeNode.isFirstNode;
}
//显示修改按钮
function showRenameBtn(treeId, treeNode) {
return true;
}
var newCount = 1;
//鼠标移动显示控件
function addHoverDom(treeId, treeNode) {
//alert("add..");
//显示增加按钮
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
+ "' title='add node' οnfοcus='this.blur();'></span>";
sObj.after(addStr);
//增加按钮点击,添加节点
var btn = $("#addBtn_"+treeNode.tId);
if (btn) btn.bind("click", function(){
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
//获取新添加节点的信息
//显示新节点
var nodes=zTree.addNodes(treeNode, {id:(100 + newCount), pId:treeNode.id, name:"我的文件夹" + (newCount++)});
//后台添加新节点
$.ajax({
url:"ztree/addNode",
data:{parentId:nodes[0].pId,name:nodes[0].nodeName},
cache:false,
dataType:'JSON',
type:'post',
success:function(data){
if(data.success){
alert(data.msg);
}else{
zTree.updateNode(nodes[0]);
alert(data.msg);
}
}
})
return false;
});
};
//隐藏增加按钮
function removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
};
//节点点击
function zTreeOnClick(event, treeId, treeNode) {
//调用父类页面
window.parent.fuzhi(treeNode.name);
//alert(treeNode.tId + ", " + treeNode.name);
};
//初始化
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting,zNodes);
});
</SCRIPT>
<style type="text/css">
.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
</style>
</head>
<body>
<div class="zTreeDemoBackground left">
<ul id="treeDemo" class="ztree"></ul>
</div>
</body>
</html>
controller:
package com.junal.back.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.junal.back.domain.TreeNode;
import com.junal.back.domain.TreeNode01;
import com.junal.back.service.MenuService;
/**
* ztree menu
* @author aL-Jun
*
*/
@Controller
@RequestMapping("ztree")
public class MenuController {
//依赖注入
@Autowired
private MenuService<TreeNode> menuService;
/**
* 默认一级菜单0
* @param id
* @return
*/
@RequestMapping("/get")
@ResponseBody
public List<Map<String, Object>> getTreeDate(@RequestParam(defaultValue="0")Long id){
//查询同级菜单
List<TreeNode> list=menuService.getMenuList(id);
List< Map<String, Object> > listMap=new ArrayList<Map<String, Object>>();
//组装
for(int i=0;i<list.size();i++){
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", ((TreeNode) list.get(i)).getId());
map.put("pId", ((TreeNode) list.get(i)).getParent_id());
map.put("name", ((TreeNode) list.get(i)).getText());
//节点展开与关闭
//if((TreeNode)list.get(i).g)
map.put("isParent", "true");
listMap.add(map);
}
System.out.println(list.toString());
return listMap;
}
/**
* 删除菜单节点
* @param ids
* @return
*/
@RequestMapping("/deleteByIds")
public String deleteNodeByIds(Long [] ids){
System.out.println("准备删除节点。。。");
return "";
}
/**
* 添加节点
* @return
*/
@RequestMapping("/addNode")
public String addNode(Long id,String nodeName){
System.out.println("add...");
return "";
}
/**
* 修改版节点
* @return
*/
@RequestMapping("/editNodeName")
public String editNodeName(Long id,String name,Long pId){
System.out.println("修改...");
return "";
}
}