相关技术struts2 + ajax + json + zTree,帮我写action和ajax,谢谢!
其中zTree的数据,
var zNodes =[
{ id:1, pId:0, name:"公司行政本部",open:true},
{ id:11, pId:1, name:"公司高管 ", open:false},
{ id:111, pId:11, name:"叶子节点", open:false},
]...
在action中通过json传到页面。AjaxJSONzTree
其中zTree的数据,
var zNodes =[
{ id:1, pId:0, name:"公司行政本部",open:true},
{ id:11, pId:1, name:"公司高管 ", open:false},
{ id:111, pId:11, name:"叶子节点", open:false},
]...
在action中通过json传到页面。AjaxJSONzTree
定义一个树的对象:有id,pId,name,open的属性,
然后根据你从数据库查出的数据来填充这个树对象
估计会用到递归
open属性不写的话,树都是展开的。你可以根据是不是下面有子树来判断是否false
我的E-mail:[email protected].
http://zhidao.baidu.com/question/554876613?quesup2&oldq=1
Action代码:
// 生成部门树
public void generateOrganizationTree() throws IOException {
String id = this.getRequest().getParameter("id");
organization = organizationService.getOrganization(id);
List<OrganizationStructure> organizationlist = new ArrayList<OrganizationStructure>();
List<OrganizationStructure> organizations = recursiveOrganization(id,
null, organizationlist);
String jsonString = "";
if (organizations != null) {
jsonString = formatOrganizationJson(organizations);
}
String json = jsonString.replace("\"", "'");
this.setResult("{\"IsSuccess\":true,\"jsonNodes\":\"" + json + "\"}");
// System.out.println("result:" + this.getResult());
this.getResponse().setContentType("application/json; charset=utf-8");
PrintWriter pw = this.getResponse().getWriter();
pw.print(this.getResult());
}// 使用递归查询栏目
public List<OrganizationStructure> recursiveOrganization(String id,
String type, List<OrganizationStructure> organizationlist) {
List<OrganizationStructure> organizations = organizationService
.getOrganizations(id, type);
for (OrganizationStructure os : organizations) {
organizationlist.add(os);
recursiveOrganization(os.getId(), type, organizationlist);
}
return organizationlist;
}//部门list转换为JSONArray
private String formatOrganizationJson(
List<OrganizationStructure> organizationlist) {
JSONArray josnArray = new JSONArray();
for (OrganizationStructure os : organizationlist) {
String pId = null;
String iconUrl = null;
boolean drag = false;
if (os.getParent() == null) {
pId = "0";
iconUrl = "/images/1_close.png";
drag = false;
} else {
pId = os.getParent().getId();
drag = true;
}
JSONObject node = new JSONObject();
node.put("id", os.getId());
node.put("pId", pId);
node.put("name", os.getChName());
node.put("icon", iconUrl);
josnArray.add(node);
}
return josnArray.toString();
}
<div id="treeDemo" class="ztree"></div>
<script language="javascript">
var zTreeObj;
var setting = {
async: {
enable: true,
dataType: "json",
dataFilter:ajaxDataFilter,
url: "/structureTree/generateOrganizationTree.do",
autoParam: ["id"]
},
check:{
enable: false,
chkStyle: "checkbox"
},
edit: {
drag: {
autoExpandTrigger: true,
isCopy: false,
isMove: true,
prev: dropPrev,
inner: false,
next: dropNext,
minMoveSize: 10
},
enable: true,
showRemoveBtn: false,
showRenameBtn: false
},
view: {
nameIsHTML: true,
showIcon: true,
showLine: true,
dblClickExpand:false },
data: {
keep: {
parent: true
},
simpleData: {
enable: true,
idKey : "id",
pIdKey : "pId",
rootPId : null
}
},
callback: {
beforeDrag: beforeDrag,
beforeDrop: beforeDrop,
beforeDragOpen: beforeDragOpen,
onDrag: onDrag,
onDrop: onDrop,
onExpand: null,
onAsyncSuccess: null,
onClick: null,
onDblClick: null
}
};function ajaxDataFilter(treeId, parentNode, responseData) {
if (responseData!=null&&responseData.IsSuccess) {
responseData = eval(responseData.jsonNodes);
}
return responseData;
}$(document).ready(function(){
$.ajax({
url : "/structureTree/generateOrganizationTree.do",
data : {id:"0"},
type : "GET",
dataType : "json",
success : function(data){
if(data.IsSuccess){
var zNodes = eval('(' + data.jsonNodes + ')');
zTreeObj=$.fn.zTree.init($('#treeDemo'),setting,zNodes);
}else{
alert("发生错误。");
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
//alert(XMLHttpRequest.status);
//alert(XMLHttpRequest.readyState);
//alert(textStatus);
}
});
});具体要实现对树的哪些操作,可以查看zTree的API文档(http://www.ztree.me/v3/api.php)。