宁波云停车项目的菜单列表在数据库中,进入项目时在mainpage.jsp中找了一圈,并没有找到关于页面加载时从数据库中得到菜单的代码和路径,根据项目的结构,到Controller层下找到,据分析与观察,带Page的是进行页面跳转用的,主要从数据库中得到菜单的是另一个
@RequestMapping(value = "/main/api/menu", method = RequestMethod.POST)
@ResponseBody
public Object menu(ModelMap model) {
DeptUserInfo deptUserInfo = (DeptUserInfo) model.get("deptUserInfo");
System.out.println(deptUserInfo.getUsername());
String usercode = deptUserInfo.getUsercode();
String menutype = "1";
List list1 = aclUserService.getAclUserMenuRoleList(usercode, menutype, "1", "0"); //一级菜单
List mapList1 = new ArrayList<AclUserMenuJson>();
if (list1 != null && list1.size() > 0) {
//一级菜单
for (int i = 0; i < list1.size(); i++) {
AclMenu menuPo1 = (AclMenu) list1.get(i);
List lastlist = new ArrayList<AclUserMenuJson>();
//二级菜单
List list2 = aclUserService.getAclUserMenuRoleList(usercode, menutype, menuPo1.getPid().toString(), "0");
if (list2.size() > 0) {
for (int j = 0; j < list2.size(); j++) {
AclMenu menuPo2 = (AclMenu) list2.get(j);
AclUserMenuJson menuJson = new AclUserMenuJson(menuPo2.getPid(), menuPo2.getMenuname(), menuPo2.getMenuurl(), menuPo2.getMenuicon());
//三级菜单
List list3 = aclUserService.getAclUserMenuRoleList(usercode, menutype, menuPo2.getPid().toString(), "0");
menuJson.setMenus(setMenuListToJson(list3));
lastlist.add(menuJson);
}
}
AclUserMenuJson menuJson1 = new AclUserMenuJson(menuPo1.getPid(), menuPo1.getMenuname(), menuPo1.getMenuurl(), menuPo1.getMenuicon());
menuJson1.setMenus(lastlist);
mapList1.add(menuJson1);
}
}
从这里最后到xml文件
<select id="getAclUserMenuRoleList" resultType="com.sunland.pojo.AclMenu">
SELECT c.*
FROM acl_menu c
WHERE exists(SELECT 1
FROM acl_user_role a, acl_menu_role b
WHERE a.usercode = #{userCode,jdbcType=VARCHAR}
AND a.roleid = b.roleid
AND b.menuid = c.pid)
AND c.menutype = #{menuType,jdbcType=VARCHAR}
AND c.platformtype = 1
<if test="parid != null and parid!=''">
AND parid = #{parid,jdbcType=VARCHAR}
</if>
<if test="isbtn != null and isbtn!=''">
and c.isbtn =#{isbtn}
</if>
ORDER BY sortby
</select>
与数据库中的acl_menu,acl_user_role,acl_menu_role 这3张表有关系,生成一个自己的菜单。
复制一个已经写完的jsp页面,进行修改,修改之后,新建Controller,service等,得到以下注意点
-
jsp页面加载时,会对数据库进行一次查询,此方法与查询按钮的方法为同一个,带参数时查询一些,不带参数时查询所有
-
加载页面时,主键可以隐藏
{
“targets”: [0],
“visible”: false,
}
通过这2行代码可以隐藏主键,“0”代表第一个,可以更改 -
可以将不被看见的数据隐藏通过input type=“hidden”,可以通过此方法调用和传递一些数据