我又回来了,带来了Spring3MVC+MyBatis+ExtJs3整合开发系列之第二篇:菜单模块演示。
承接上篇
Spring3MVC+MyBatis+ExtJs3整合开发系列之一:登录模块演示,本篇增加了菜单加载的功能到本项目中。
菜单模块结构图:
domain层
public class Menu implements Serializable {
private static final long serialVersionUID = -2726709540069876682L;
private Long id;
private Long parent_id;
private String name;
private String image;
private String url;
private String qtip;
private Integer sortNum;
private String description;
/**
* true:默认为叶子结点,即子菜单
*/
private boolean leaf = true;
private List<Menu> children;
其中,
leaf用来标识主子菜单(同时也是为了配合前端extjs treePanel控件所需的标识),这里true表示为子菜单,false表示为主菜单;
children用来存放主菜单下的所有子菜单。
service层
@Service
public class MenuService {
@Autowired
private MenuMapper menuMapper;
@Transactional
public List<Menu> getMenuListByUserId(Long userId) {
Map<String,Object> param = new HashMap<String,Object>();
List<Menu> mainMenuList = menuMapper.getMainMenuList(userId);
Iterator<Menu> it = mainMenuList.iterator();
//装载主菜单下所有的子菜单
while(it.hasNext()) {
Menu menu = it.next();
//false:表示为主菜单
menu.setLeaf(false);
Long parentId = menu.getId();
param.put("userId", userId);
param.put("parentId", parentId);
List<Menu> subMenuList = menuMapper.getSubMenuList(param);
menu.setChildren(subMenuList);
}
return mainMenuList;
}
}
简单说下两级菜单的加载原理:我这里只假设了只有主菜单和子菜单两级菜单(多级菜单的实现思想类似)。首先,根据用户的菜单权限,加载所有的主菜单,然后根据每个主菜单的菜单id去逐个获取该主菜单下的所有子菜单,所有的子菜单加载完后那么也就完成了两级菜单的加载了。
controller层
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private MenuService menuService;
/**
* 获取所有菜单
* @param request
* @param response
* @return
*/
@RequestMapping(value="/Menus",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> getTopMenus(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> result = new HashMap<String,Object>();
User user = (User)request.getSession().getAttribute("user");
List<Menu> list = menuService.getMenuListByUserId(user.getId());
result.put("success", "true");
result.put("data", list);
return result;
}
spring3mvc封装了json的自动转换,使用@ResponseBody标记下该方法,这样return对象的时候,将自动帮你把普通的pojo对象转成json格式的对象.
菜单效果图:
源码地址:http://code.google.com/p/kika/
- 大小: 14.6 KB
- 大小: 32.6 KB
分享到:
相关推荐
Spring3MVC + MyBatis + ExtJs3整合开发系列
spring+mvc+mybatis+extjs整合 内含mysql数据库,很适合新手借鉴
NULL 博文链接:https://kimho.iteye.com/blog/1148782
SpringMVC和Extjs一起使用,为以后做一个好看的页面做铺垫
前台完全基于 extjs mvc框架开发 想学习extjs mvc的可以看看 后台用了activiti工作流 写了一个简单的请假审批例子 想学习spring mvc的也可以下载看看
整理了一下Spring、Spring mvc、Mybatis、ExtJs实战开发技术的内容,作为进阶提示
JavaWeb+Extjs+springMvc+mybatis做的信息管理系统,主要是用Extjs实现前台,其中包括了树形结构和基本的表单和列表等,springMVC框架,数据库操作层使用的是mybatis,其中的数据库表结构可以根据其中的mapper.xml...
本人初步采用spring mvc3 mybatis3 extjs 3.4开发进销存软件,有很好的参考价值,其中数据库采用oracle,分页采用调用oracle的存储过程,有很好的学习价值,若是想开发简单的CRM和进销存系统是极品参考的系统。...
spring mvc +mybatis+extjs3 整合开发:登陆模块演示,实战开发
eclipse 开发的作品,整合spring mvc mybatis ExtJS6,实现漂亮的管理后台; 主要技术说明:完善了CURD的功能;健全的权限管理;缓存工厂的使用,默认使用EHCACHE;后台模板切换;程序启动自动加载平台参数;完善了...
Extjs5.0从入门到实战... panel, tabpanel,Tree, grid, form表单(及其验证方法),数据组件: store,model等,讲解了动态菜单、单表和子父表模块等的开发方法以及后端spring,spring mvc,mybatis的整合和数据打通等。
spring mvc mybatis extjs 3.4 权限管理 ,调用oracle存储过程作为分页,是进销存产品开发的最好的参考案例
Spring3MVC+MyBatis+ExtJs3 权限管理
spring3MVC,Extjs3,MyBatis实现的后台管理
给大家分想一套视频教程,Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis),希望对大家学习Extjs5.0有帮助
通用后台管理系统 new extjs spring mvc mybatis maven
荀 -展示柜奥普方面spring-aop 引导程序缓存——弹簧缓存数据库米巴蒂斯蔚来米娜2 nosql redis -- ...-extjs4 -- extjs4 设计使用 sencha 架构师-javascript 例子-jsr 并发贾克斯蔚来小门户servlet3 网络套接字-static