Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块演示
来源:互联网 发布:用mac开发java 编辑:程序博客网 时间:2024/06/08 11:51
菜单模块结构图:
domain层
其中,leaf用来标识主子菜单(同时也是为了配合前端extjs treePanel控件所需的标识),这里true表示为子菜单,false表示为主菜单;children用来存放主菜单下的所有子菜单。
service层
简单说下两级菜单的加载原理:我这里只假设了只有主菜单和子菜单两级菜单(多级菜单的实现思想类似)。首先,根据用户的菜单权限,加载所有的主菜单,然后根据每个主菜单的菜单id去逐个获取该主菜单下的所有子菜单,所有的子菜单加载完后那么也就完成了两级菜单的加载了。
controller层
spring3mvc封装了json的自动转换,使用@ResponseBody标记下该方法,这样return对象的时候,将自动帮你把普通的pojo对象转成json格式的对象.
菜单效果图:
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格式的对象.
菜单效果图:
0 0
- Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块演示
- Spring3MVC+MyBatis+ExtJs3整合开发系列之一:登录模块演示
- Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块
- Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块
- Spring3MVC+MyBatis+ExtJs3整合开发系列之四:角色管理模块
- spring3mvc 整合 mybatis
- Mybatis系列之Spring & Mybatis整合
- orm-mybatis开发系列之二:一对多关联查询
- mybatis系列二:Spring与MyBatis的整合实例
- mybatis系列教程(二)——spring整合mybatis
- Spring3mvc和hibernate整合
- Extjs3.0角色权限管理系统-菜单管理模块篇
- Extjs3.0角色权限管理系统-菜单列表模块篇
- spring3mvc+mybatis 环境搭建
- Spring3MVC+Mybatis快速使用
- Mybatis源码(二)之Spring整合mybatis创建SqlSession
- 【易语言界面开发系列教程之 (EX_UI使用系列教程--第10讲(EXui右键菜单演示案例))】
- ECMBoss企业内容解决方案项目系列之(二)人力资源整合组建项目精英开发团队
- 设计模式之创建型模式
- 关于某些同行盗用“jeecg”关键词在百度竞价中推广的声明
- spring boot conditionBean MissingBean @configuration 配置不存在问题
- 如何使用AndroidStudio将开源项目library发布到jcenter
- 屏蔽退格键
- Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块演示
- Android NestedScrolling 实战
- 十五、CentOS下FTP安装及配置
- C++中的extern声明变量详解
- spring aop 做redis缓存
- mybatis
- Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块
- JS闭包作用及理解
- oracle的用户、表、表空间三者的关系