最終效果:
點擊非葉子節點時,向後台發送請求,擷取下級菜單
前台代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!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>Insert title here</title></head><script type="text/javascript" src="<%=basePath %>/js/jquery-1.8.1.js"></script><script type="text/javascript" src="<%=basePath %>/js/jquery.ztree.all-3.5.min.js"></script><link href="<%=basePath %>/css/zTreeStyle.css" rel="stylesheet" type="text/css"/><script type="text/javascript">var zTree;var setting = {async: {enable: true,url:"<%=basePath%>menu/getMenu.action",autoParam:["id=pid"]},callback:{beforeClick:function(treeId,treeNode){if(treeNode.isParent){zTree.expandNode(treeNode);return true;}return false;}}}; $(function(){zTree = $.fn.zTree.init($("#tree"), setting);});</script><body><ul id="tree" class="ztree"></ul></body></html>
後台代碼(springMVC+mybatis)如下:
controller層:
@Controller@RequestMapping("menu")public class MenuController {@Autowiredprivate MenuService menuService;@RequestMapping("/getMenu")@ResponseBodypublic List<Menu> getMenu(@RequestParam(defaultValue="0")int pid) throws Exception{return this.menuService.getMenu(pid);}}
service層如下:
@Servicepublic class MenuService {@Autowiredprivate MenuDao menuDao;public List<Menu> getMenu(int pid) throws Exception{if(pid == 0){List<Menu> list = new ArrayList<Menu>();Menu menu = this.menuDao.getRoot();list.add(menu);return list;}return this.menuDao.getNextNodes(pid);}}
資料庫結構如下: