SSH-BOS项目:动态加载功能菜单

FunctionAction(新增方法):

	/**
	 * 加载当前用户显示的菜单
	 * @return
	 */
	public String loadMenu(){
		List<Function> list = functionService.loadMenu();
		BOSUtils.writerJson(list, new String[]{"parentFunction","roles","children"});
		
		return NONE;
	}

FunctionService、FunctionServiceImpl(新增方法及其实现):

	/**
	 * 加载当前用户的菜单
	 * @return
	 */
	List<Function> loadMenu();
	@Override
	public List<Function> loadMenu() {
		User user = BOSUtils.getLoginUser();
		List<Function> list = null;
		//如果当前用户为系统管理员账号
		if(user.getUsername().equals("admin")){
			//为系统管理员加载所有菜单
			list = functionDao.findByAdminMenu();
		}else{
			//为普通用户加载其对应菜单
			list = functionDao.findByUserMenu(user.getId());
		}
		
		return list;
	}

FunctionDao、FunctionDaoImpl(新增方法及其实现):

	/**
	 * 查询超级管理员的菜单信息
	 * @return
	 */
	List<Function> findByAdminMenu();

	/**
	 * 查询指定用户菜单的信息
	 * @return
	 */
	List<Function> findByUserMenu(String userId);
	@Override
	public List<Function> findByAdminMenu() {
		String hql = "FROM Function f WHERE f.generatemenu = '1' ORDER BY f.zindex DESC";
		return (List<Function>) this.getHibernateTemplate().find(hql);
	}

	@Override
	public List<Function> findByUserMenu(String userId) {
		String hql = "SELECT DISTINCT f FROM Function f LEFT OUTER JOIN f.roles"
				+ " r LEFT OUTER JOIN r.users u WHERE u.id = ? AND f.generatemenu = '1' "
				+ "ORDER BY f.zindex DESC";
		return (List<Function>) this.getHibernateTemplate().find(hql, userId);
	}

页面:

修改基本功能菜单加载的URL即可。如下:

		// 基本功能菜单加载
		$.ajax({
			url : '${pageContext.request.contextPath}/FunctionAction_loadMenu.action',
			type : 'POST',
			dataType : 'text',
			success : function(data) {
				var zNodes = eval("(" + data + ")");
				$.fn.zTree.init($("#treeMenu"), setting, zNodes);
			},
			error : function(msg) {
				alert('菜单加载异常!');
			}
		});



猜你喜欢

转载自blog.csdn.net/qq1031893936/article/details/80022674