[TOC]
系统菜单是根据用来具有哪些菜单来显示的。现在我们去处理一下
修改请求地址,如下:
// 基本功能菜单加载
$.ajax({
url : '${pageContext.request.contextPath}/functionAction_findMenu.action',
type : 'POST',
dataType : 'text',
success : function(data) {
var zNodes = eval("(" + data + ")");
$.fn.zTree.init($("#treeMenu"), setting, zNodes);
},
error : function(msg) {
alert('菜单加载异常!');
}
});
/**
* 根据当前登陆人查询对应的菜单数据,返回json
* @return
*/
public String findMenu(){
List<Function> list = functionService.findMenu();
java2Json(list,new String[]{"parentFunction","roles","children"});
return NONE;
}
/**
* 根据当前登陆人查询对应的菜单数据,返回json
*
* @return
*/
@Override
public List<Function> findMenu() {
List<Function> list = null;
//获取当前的用户
User user = BOSUtils.getLoginUser();
if(user.getUsername().equals("admin")){
//如果是超级管理员,那么获取所有的菜单
list = functionDao.findAllMenu();
}else{
list = functionDao.findMenuByUserId(user.getId());
}
return list;
}
/**
* 查询所有菜单
*
* @return
*/
@Override
public List<Function> findAllMenu() {
String hql = "SELECT DISTINCT f FROM Function f WHERE f.generatemenu = '1' ORDER BY f.zindex ASC";
List<Function> list = (List<Function>)getHibernateTemplate().find(hql);
return list;
}
/**
* 根据用户id查询菜单
*
* @param userId
* @return
*/
@Override
public List<Function> findMenuByUserId(String userId) {
String hql = "SELECT DISTINCT f FROM Function f LEFT JOIN f.roles r LEFT OUTER JOIN r.users u WHERE u.id=?"
+" AND f.generatemenu = '1' ORDER BY f.zindex ASC";
List<Function> list = (List<Function>)getHibernateTemplate().find(hql,userId);
return list;
}
为了能够生成 树形菜单,需要Function类中提供getpId方法
public String getpId(){
if(parentFunction == null){
return "0";
}
return parentFunction.getId();
}