1.dao层
package com.tree.dao; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Repository; import com.tree.domain.Tree; @Repository("treDao") public class TreeDao { @Autowired HibernateTemplate hibernateTemplate; // 获得菜单 @SuppressWarnings("unchecked") public List<Tree> findTree(String menuid) { String sql = ""; if (menuid != null) { sql = "select id,name,pageUrl from tree where sysMenu_id =" + Integer.parseInt(menuid) + ""; } else { sql = "select id,name,pageUrl from tree where sysMenu_id is null"; } final String sql1 = sql; return hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List<Tree> list = new ArrayList<Tree>(); SQLQuery sql = session.createSQLQuery(sql1); List l = sql.list(); for (int i = 0; i < l.size(); i++) { Object[] obj = (Object[]) l.get(i); Tree t = new Tree(); t.setId(Integer.parseInt(obj[0].toString())); t.setName(obj[1].toString()); t.setPageUrl(obj[2].toString()); list.add(t); } return list; } }); } // 判断是否有子菜单 @SuppressWarnings("unchecked") public List<Tree> findCMenu(final int menuid) { List<Tree> list1 = hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List<Tree> list = new ArrayList<Tree>(); SQLQuery sql = session .createSQLQuery("select id,name,pageUrl from tree where sysMenu_id =" + menuid + ""); List l = sql.list(); for (int i = 0; i < l.size(); i++) { Object[] obj = (Object[]) l.get(i); Tree t = new Tree(); t.setId(Integer.parseInt(obj[0].toString())); t.setName(obj[1].toString()); t.setPageUrl(obj[2].toString()); list.add(t); } return list; } }); return list1; } }
2.service
@SuppressWarnings("unchecked") public List<TreeVO> findMenu1(String menuid) { System.out.println("============="); List<TreeVO> lv=new ArrayList<TreeVO>(); List<Tree> list = treeDao.findTree(menuid); for (int i = 0; i < list.size(); i++) { List<Children> children=new ArrayList<Children>(); Tree t = list.get(i); TreeVO treeVO=new TreeVO(); if (treeDao.findCMenu(t.getId()).size() != 0) { treeVO.setData(t.getName()); List<Tree> list1 = treeDao.findTree(t.getId().toString()); for (int k = 0; k < list1.size(); k++) { Children child=new Children(); Tree t1 = list1.get(k); if (treeDao.findCMenu(t1.getId()).size() != 0) { this.findMenu(t1.getId().toString()); } else { child.setData(t1.getName()); children.add(child); } } } treeVO.setChildren(children); lv.add(treeVO); } return lv; }
3。action、
public String findMenu() { // this.setVo(treeService.findMenu1(null)); // this.setJsons(JSONArray.fromObject("["+treeService.findMenu(this.getMenuid())+"]").toString()); //System.out.println(JSONArray.fromObject(this.getVo())); return SUCCESS; }
4.struts.xml
<package name="jstree" extends="json-default" namespace="/ss"> <action name="tree" class="com.tree.action.TreeAction" method="findMenu"><!-- <result type="json"> <param name="includeProperties"> vo </param> </result> --><result type="json"> <param name="excludeProperties">treeService</param> </result> </action> </package>
5.页面数据
6.官方json数据
[
{ "data" : "A node", "children" : [ { "data" : "Only child", "state" : "closed" } ], "state" : "open" },
"Ajax node"
]
7.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jsTree树形菜单</title> <title>jsTree v.1.0 - json_data documentation</title> <script type="text/javascript" src="<%=path %>/js/_lib/jquery.js"></script> <script type="text/javascript" src="<%=path %>/js/_lib/jquery.cookie.js"></script> <script type="text/javascript" src="<%=path %>/js/_lib/jquery.hotkeys.js"></script> <script type="text/javascript" src="<%=path %>/js/jquery.jstree.js"></script> <link type="text/css" rel="stylesheet" href="<%=path %>/js/_docs/syntax/!style.css"/> <link type="text/css" rel="stylesheet" href="<%=path %>/js/_docs/!style.css"/> <script type="text/javascript" src="<%=path %>/js/_docs/syntax/!script.js"></script> </head> <body> <div id="demo2" class="demo"></div> <script type="text/javascript"> $(function () { $("#demo2").jstree({ "json_data" : { "ajax" : { "url" : "./ss/tree.do", "data" : function (n) { return { id : n.attr ? n.attr("id") : 0 }; } } }, "plugins" : [ "themes", "json_data" ] }); }); </script> </body> </html>
所得json数据格式与官方一样,无法显示到页面上