把代码记下来,最后问题在于Struts2往前台传JSON数据时要添加ROOT属性。Ztree会自动读取的。配置如:
<result name="success" type="json"> <param name="root">zNodes</param> </result>
js代码如下:
<script type="text/javascript">
var setting = {
async : {
enable : true,
url : "<%=path%>/json/report!receiverList.action",
autoParam : [ "receiverId" ]
},
check : {
enable : true,
chkboxType : {
"Y" : "",
"N" : ""
}
},
view : {
dblClickExpand : false
},
data : {
simpleData : {
enable : true,
idKey : 'id',
idPKey : 'pId',
rootPid : null
}
},
callback : {
beforeClick : beforeClick,
onCheck : onCheck
}
};
var zNodes = [];
function beforeClick(treeId, treeNode) {
if (treeId == 'reportToTree') {
var zTree = $.fn.zTree.getZTreeObj("reportToTree");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
if (treeId == 'sendToTree') {
var zTree = $.fn.zTree.getZTreeObj("sendToTree");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
};
function onCheck(e, treeId, treeNode) {
if (treeId == 'reportToTree') {
var zTree = $.fn.zTree.getZTreeObj("reportToTree"), nodes = zTree
.getCheckedNodes(true), v = "";
result = "";
for ( var i = 0, l = nodes.length; i < l; i++) {
v += nodes[i].name + ",";
result += nodes[i].receiverId + "," + nodes[i].receiverType + ";"
}
if (v.length > 0)
v = v.substring(0, v.length - 1);
if (result.length > 0)
result = result.substring(0, result.length - 1);
var cityObj = $("#reportTo");
var resultObj = $("#resultReport");
cityObj.attr("value", v);
resultObj.attr("value", result);
}
if (treeId == 'sendToTree') {
var zTree = $.fn.zTree.getZTreeObj("sendToTree"), nodes = zTree
.getCheckedNodes(true), v = "";
result = "";
for ( var i = 0, l = nodes.length; i < l; i++) {
v += nodes[i].name + ",";
result += nodes[i].receiverId + "," + nodes[i].receiverType + ";"
}
if (v.length > 0)
v = v.substring(0, v.length - 1);
if (result.length > 0)
result = result.substring(0, result.length - 1);
var cityObj = $("#sendTo");
var resultObj = $("#resultSend");
cityObj.attr("value", v);
resultObj.attr("value", result);
}
};
function showMenu() {
var cityObj = $("#reportTo");
var cityOffset = $("#reportTo").offset();
$("#reportToContent").css( {
left : cityOffset.left + "px",
top : cityOffset.top + cityObj.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
};
function showMenu2() {
var cityObj = $("#sendTo");
var cityOffset = $("#sendTo").offset();
$("#sendToContent").css( {
left : cityOffset.left + "px",
top : cityOffset.top + cityObj.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown2);
};
function hideMenu() {
$("#reportToContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
};
function hideMenu2() {
$("#sendToContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown2);
};
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "reportTo"
|| event.target.id == "reportToContent" || $(event.target).parents(
"#reportToContent").length > 0)) {
hideMenu();
}
};
function onBodyDown2(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "sendTo"
|| event.target.id == "sendToContent" || $(event.target).parents(
"#sendToContent").length > 0)) {
hideMenu2();
}
};
$(document).ready(function() {
$.fn.zTree.init($("#reportToTree"), setting, zNodes);
$.fn.zTree.init($("#sendToTree"), setting, zNodes);
});</script>