我有一张表action(id,name,id1),这是一张权限表,用于在登陆时取得对应权限,id1为空的说明是标题功能
假如有如下数据:
1   A   
2   A1   1
3   A2   1
4   A3   1
5   B
6   B1    5
7   B2    5
我要在登陆时得到的结果是A标题下有A1,A2,A3 3个子菜单,B标题下有B1,B2菜单,我目前的处理方法是在登陆时传一个id1进去,查出每个标题对应的子菜单,原后结果放在list中,在跳转页面上在得到这list,这样就有list1,list2...
等等多个,如果菜单多的话,登陆时就要多次查数据库,这样导致登陆很慢,我刚试了下,查到list3时就报错了,请问有没好的方法得到我想要的结果。

解决方案 »

  1.   

    查询到list3就出错,肯定是你代码写的有问题.
    如果是菜单一般这个表的数据不会很多,也就一二百条,完全可以全读出来,递归生成TREE菜单.如果数据实在太多,可以用AJAX局部刷新
      

  2.   

    我单独只查list3那一个,又不报错,一起查就报错,数据是不多,不到100条,我也行成了10个类别的。理论上我写得都是一样的模式,调用都一个方法,不应该啊
      

  3.   

    这是Action里的:
    List list =logser.getUserAction("300".toString());
    //List list1=logser.getUserAction("350".toString());
    List list2=logser.getUserAction("400".toString());
    List list3=logser.getUserAction("450".toString());
    List list4=logser.getUserAction("500".toString());
    List list5=logser.getUserAction("550".toString());
    List list6=logser.getUserAction("600".toString());
    List list7=logser.getUserAction("650".toString());
    List list8=logser.getUserAction("700".toString());
    List list9=logser.getUserAction("750".toString());
    request.setAttribute("actionsList",  list);
       // request.setAttribute("actionsList1", list1);
        request.setAttribute("actionsList2", list2);
        request.setAttribute("actionsList3", list3);
        request.setAttribute("actionsList4", list4);
        request.setAttribute("actionsList5", list5);
         request.setAttribute("actionsList6", list6);
        request.setAttribute("actionsList7", list7);
        request.setAttribute("actionsList8", list8);
        request.setAttribute("actionsList9", list9);
    这是service:
    public List getUserAction(String keyFlag)
    {
    return logdao.getUserAction(keyFlag);
    }
    这是DAO中的:
    public List getUserAction(String keyFlag) {
    //  验证用户

    String hql = "select u.actionName,u.path from WebAction u where u.keyFlag=?";
        Query query = this.getSession().createQuery(hql);
        query.setString(0, keyFlag) ;
        List userList=query.list(); 
    return userList;
    }
    我刚一个一个的加,加到5个一起查时就报错了。奇怪