javaweb 获取用户菜单数据,前端循环遍历生成三级菜单

javaweb 获取用户菜单数据,前端循环遍历生成三级菜单_第1张图片

后台action方法

//登录系统入口,用户名检测,菜单获取等。
    public String portal() {
        User existUser=userService.getUserByNameAndPassword(user);
        if(existUser==null){
            this.addActionError("登录账号或者密码错误!");
            return LOGIN;
        }
        else {
            ServletActionContext.getRequest().getSession().setAttribute("LoginUser", existUser);
            List

menuList = menuService.getUserMenuList(existUser);
            ActionContext.getContext().getValueStack().set("userMenuList", menuList);
            return "index";
        }

    }

mysql数据库表情况

javaweb 获取用户菜单数据,前端循环遍历生成三级菜单_第2张图片

jsp页面代码,循环遍历获取,有部门冗余数据还没删,做参考。

<%--
  Created by IntelliJ IDEA.
  User: xilinxiao
  Date: 2018/11/12
  Time: 20:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/common/taglibs.jsp"%>


 
 
 

  hAdmin- 主页

 
 

 

 
 
 
 



 
 
 
 
 

   

     
   

   

     
   

 

 










 

/**************************************************************补上java内容

//查询菜单menu清单

public class MenuDaoImpl implements MenuDao {
    @Override
    public List

findTree() {
        List list=null;
        Transaction transaction=null;
        try{
            Session session= MyHibernateSessionFactory.getSessionFactory().getCurrentSession();
            transaction=session.beginTransaction();
            String sql="from Menu ";
            Query query=session.createQuery(sql);
            list=query.list();
            transaction.commit();
            return list;
        }catch (Exception e){
            e.printStackTrace();
            transaction.commit();
            return list;

        }finally {
            if(transaction!=null)
            {
                transaction=null;
            }
        }

    }
}

//service组合处理


public class MenuServiceImpl  implements MenuService{

    /*
  * 排序,根据order排序
  */
    public Comparator

order(){
        Comparator comparator = new Comparator() {
            @Override
            public int compare(Menu o1, Menu o2) {
                if(o1.getOrder() != o2.getOrder()){
                    return o1.getOrder() - o2.getOrder();
                }
                return 0;
            }
        };
        return comparator;
    }

    public List getMenuJson(){
        Map data = new HashMap();
        try {//查询所有菜单
            MenuDao menuDao=new MenuDaoImpl();
            List

allMenu = menuDao.findTree();
            //根节点
            List rootMenu = new ArrayList();
            for (Menu nav : allMenu) {
                if(nav.getPid()==0){//父节点是0的,为根节点。
                    rootMenu.add(nav);
                }
            }
      /* 根据Menu类的order排序 */
            Collections.sort(rootMenu, order());
            //为根菜单设置子菜单,getClild是递归调用的
            for (Menu nav : rootMenu) {
        /* 获取根节点下的所有子节点 使用getChild方法*/
                List childList = getChild(nav.getId(), allMenu);
                nav.setChildren(childList);//给根节点设置子节点
            }
            /**
             * 输出构建好的菜单数据。
             *
             */
            data.put("list", rootMenu);
            return rootMenu;
        } catch (Exception e) {
            e.printStackTrace();
            data.put("success", "false");
            data.put("list", new ArrayList());
            return new ArrayList();
        }
    }


    /**
     * 获取子节点
     * @param id 父节点id
     * @param allMenu 所有菜单列表
     * @return 每个根节点下,所有子菜单列表
     */
    public List

getChild(Integer id,List allMenu){
        //子菜单
        List childList = new ArrayList();
        for (Menu nav : allMenu) {
            // 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较
            //相等说明:为该根节点的子节点。
            if(nav.getPid().equals(id)){
                childList.add(nav);
            }
        }
        //递归  如果还有第三级及无限极 ,下面这3行开放
        // for (Menu nav : childList) {
        //      nav.setChildren(getChild(nav.getId(), allMenu));
        //  }
        Collections.sort(childList,order());//排序
        //如果节点下没有子节点,返回一个空List(递归退出)
        if(childList.size() == 0){
            return new ArrayList();
        }
        return childList;
    }


}

 

本文应用的是hAdmin这个前端后台模板,大家可以百度。

 

你可能感兴趣的:(javaweb,java)