package com.cn.ztree.action;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import com.cn.ztree.bean.Node;
import com.cn.ztree.util.JsonUtil;
import net.sf.json.JSONArray;
public class MenuAction extends BasicAction {
private static final long serialVersionUID = -4761611752996052175L;
public String getMenuInfo(){
String flag=request.getParameter("flag");
System.out.println(flag);
if(flag.equals("init")){//直接加载ztree
List list = getTrees();//得到所有节点
try {
JSONArray json=JsonUtil.convertListToJson(list);
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer;
writer = response.getWriter();
writer.write(json.toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}else if(flag.equals("ajax")){//延迟加载ztree
String id = request.getParameter("id");
if(id==null){//第一次进入初始化父节点
List list = new ArrayList();
Node in1=getById(1);
Node in5=getById(5);
list.add(in1);
list.add(in5);//测试用的,得到初始化0级父节点,应该从数据库中获取。
try {
JSONArray json=JsonUtil.convertListToJson(list);
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer;
writer = response.getWriter();
writer.write(json.toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}else{//根据父节点id加载对应的子节点
List list = getChilds(Integer.valueOf(id));//通过父id取得子节点集合,测试就自己写个方法,应该从数据库中获取。
try {
JSONArray json=JsonUtil.convertListToJson(list);
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer;
writer = response.getWriter();
writer.write(json.toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return null;
}
public List getTrees() {
Node in = new Node();
in.setId(1);
in.setpId(0);
in.setIsParent("true");
in.setName("父节点1");
Node in1 = new Node();
in1.setId(2);
in1.setpId(1);
in1.setName("子节点11");
in1.setIsParent("true");
Node in2 = new Node();
in2.setId(3);
in2.setpId(1);
in2.setName("子节点12");
Node in3 = new Node();
in3.setId(4);
in3.setpId(2);
in3.setName("子节点111");
Node in4 = new Node();
in4.setId(5);
in4.setpId(0);
in4.setIsParent("true");
in4.setName("父节点2");
Node in5 = new Node();
in5.setId(6);
in5.setpId(5);
in5.setName("子节点21");
List list = new ArrayList();
list.add(in);
list.add(in1);
list.add(in2);
list.add(in3);
list.add(in4);
list.add(in5);
return list;
}
public Node getById(Integer id) {
List list = getTrees();
for (Node Node : list) {
if (id == Node.getId()) {
Node in = Node;
return in;
}
}
return null;
}
public List getChilds(Integer id) {
List list = getTrees();
List result = new ArrayList();
for (Node Node : list) {
if (id.intValue() == Node.getpId().intValue()) {
result.add(Node);
}
}
return result;
}
}