本树的说明如下:
1、树实现动态加载
2、要传递一个按钮的参数,比如是单选,还是复选
3、只有是叶子节点才有按钮出现
如果有需要可以在此基础上进行修改,我的并不完善,只是实现了功能。
用的struts1.2框架
首先、从页面开始写: html代码如下:
树将在id为back的位置进行展示。
js代码如下:
这个是展示树的页面,进入这个页面的时候会自动加载这个treeview,调用url地址, url的参数可以接收过来,demo.do?method=findChildren&viewBox=1这地方的viewBox代表按钮的是单选还是复选。
在此页面要要引入jquery treeview ,可以参照juerytreeview的例子async.html
其次、配置struts 1.2action
最后 actioin中代码如下:
public ActionForward findChildren(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//此处动态加载要设置的头信息
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/json;charset=UTF-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String viewBox = request.getParameter("viewBox");
String root = request.getParameter("root");
if("source".equals(root)){
root="parent";
}
String output= getNode(root,viewBox);
out.write(output);
out.flush();
out.close();
return null;
}
//以下代码为业务代码,用来查询子节点,生成json格式数据,具体的json格式请参
//考treeview例子中的 source.html,这里用了spring服务注入,DemoVo 为是javaBean 有三个字段 其中 根据 code name 还有父节点 parent
private String getNode(String code,String viewBox) throws Exception{
StringBuffer sb = new StringBuffer();
sb.append("[");
List
if(demoService.hasSubItem(code)){//有孩子执行
temp = demoService.findChildrenByParent(code);//根据code查询其孩子
int j=0;
for (int i = 0; i < temp.size(); i++,j++) {
if(j>0){
sb.append(",");
}
sb.append(" {");
DemoVo item = (DemoVo)temp.get(i);
if(demoService.hasSubItem(item.getCode())){//有孩子
sb.append(" \"text\": \""+item.getName()+"\""); //这里是显示的名称
sb.append(",");
sb.append(" \"hasChildren\": true"); //设为true预留会显示+号
}else{//叶子节点 显示按钮
sb.append(" \"text\": ");
if("1".equals(viewBox)){
sb.append("\"");
sb.append(item.getName());
sb.append("\"");
}
sb.append(",");
sb.append(" \"expanded\": false ");
sb.append(",");
sb.append(" \"id\": \""+item.getCode()+"\"");//给
sb.append(" }");
}
}
sb.append("]");
return sb.toString();
}
javaBean如下:
public class DemoVo {
private String code; //在数据库中唯一
private String name;
private String parent; //父节点就是code
//setter getter 省略
}
总结:简单说明一下,treeView 在首次访问的时候会传参数 root 默认值为source,此代码的跟节点,为parent
在首次访问url后,查询到一级节点,此url被存起来了,再次点击节点,url中多了root参数,
其值根据点击的
本人邮箱 [email protected]