首先有一实体类如下,为了篇幅废话部分去掉:
package com.myopenshare.ztree.bean;
public class Department {
private int id;
private String name;
private Department parent;
private boolean hasChild;
private String remark;
public Department(int id,String name,Department parent,boolean hasChild,String remark){
this.id=id;
this.name=name;
this.parent=parent;
this.hasChild=hasChild;
this.remark=remark;
}
}
当然前台获取json里面所有节点元素对应实体内的各个属性。
先在json集合中首先初始化一些数据,我们所请求的action如下:
package com.myopenshare.ztree.action;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import com.myopenshare.ztree.bean.Department;
import com.opensymphony.xwork2.ActionSupport;
public class MenuAction extends ActionSupport {
private JSONArray json;
public List<Department> departments;
public JSONArray getJson() {
return json;
}
public void setJson(JSONArray json) {
this.json = json;
}
public List<Department> getDepartments() {
return departments;
}
public void setDepartments(List<Department> departments) {
this.departments = departments;
}
public String loadDepartmentTree() {
departments = new ArrayList<Department>();
Department dept1 = new Department(-1, "部门", null, true, "部门的根节点");
Department dept3 = new Department(2, "技术部", dept1, true, "技术部的根节点");
Department dept4 = new Department(3, "销售部", dept1, true, "销售部的根节点");
Department dept5 = new Department(4, "车间", dept1, true, "车间的根节点");
Department dept6 = new Department(5, "研发中心", dept3, false, "研发中心的根节点");
departments.add(dept1);
departments.add(dept3);
departments.add(dept4);
departments.add(dept5);
departments.add(dept6);
json = JSONArray.fromObject(departments);
return SUCCESS;
}
然后再就是配置文件stratus.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<package name="department" extends="json-default">
<action name="department" class="com.myopenshare.ztree.action.DeparttTreeAction"
method="loadDepartmentTree">
<result name="success" type="json">
<param name="root">json</param>
</result>
</action>
</package>
</struts>
然后前端引用页面就可以直接用$.ajax({url:'department.action',type:'get',...}); 来获取json数据集。
其中要注意的问题有 要引用json包:
json-lib-2.3-jdk15.jar
jsonplugin-0.32.jar
可以在附件下载,当然也要确保struts2的基本包也正常引用,都放在lib文件夹内。