簡體   English   中英

從數據庫生成Primefaces MenuModel

[英]generate Primefaces MenuModel from database

我想問問如何使生成使用遞歸函數從數據庫menumodel。 我已經上過這堂課,但是沒有用。 請幫助我,我已經找到並嘗試了一個星期。謝謝

public class MenuDAOImpl extends ManagerBase<MenuMaster> implements MenuDAO {

    private List<MenuMaster> list;
    private List<MenuData> datas;

    @Override
    public MenuModel getMenu() {
        MenuModel model = new DefaultMenuModel();
        String[] orders = new String[]{"id"};
        try {
            list = getBySQLQuery("PARENT_MENU_ID=0", orders, 1000);
            for (MenuMaster menuMaster : list) {
                menuChild(menuMaster);
            }
        } catch (Exception e) {
        }
        return model;
        // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    private List<MenuData> menuChild(MenuMaster master) {
        List<MenuData> listChild = new ArrayList<MenuData>();
        String[] orders = new String[]{"id"};
        try {
            MenuData data = new MenuData();
            data.mm = master;
            data.mms = getBySQLQuery("PARENT_MENU_ID=" + master.getParentMenuId(), orders, 1000);
            listChild.add(data);
        } catch (Exception e) {
        }
        return listChild;
    }

    public class MenuData {

        private MenuMaster mm;
        private List<MenuMaster> mms;

        public MenuData() {
        }

        public MenuMaster getMm() {
            return mm;
        }

        public void setMm(MenuMaster mm) {
            this.mm = mm;
        }

        public List<MenuMaster> getMms() {
            return mms;
        }

        public void setMms(List<MenuMaster> mms) {
            this.mms = mms;
        }
    }
}

這是我的數據庫表(對不起,我無法上傳圖像)

ID | MENU_NAME | DISPLAY_NAME | URL | PARENT_MENU_ID |
1 | 員工| 員工| /employee.xhtml | 0 |
2 | 員工菜單| 員工| /employee.xhtml | 1 |
3 | 實用程序| 實用程序| | 0 |
7 | asdf | asdf | | 6 |
6 | utilsmenu | 測試 | 3 |
5 | utilsdata | 管理員配置| asdf | 3 |
4 | 菜單| 菜單編輯器 /utility/menu.xhtml | 3 |

這是我的一些代碼,我通過將子菜單和menuitems附加到他的getChildren()屬性來創建menumodel

private MenuModel model;

public MenuModel getModel() {

    if(model != null) return model;

    model = new DefaultMenuModel();
    addDynamicMenus();

    return model;
}

private void addDynamicMenus(){

    if(modules == null){
        modules = service.getModulesByUserLogin(loginBean.getUsername());
    }

    Submenu currfather = null;

    for(SpFeModuleForUser s : modules){

        if(currfather == null || (!currfather.getId().equals("menu_" + s.getModuleID()))){
            currfather = new Submenu();
              currfather.setLabel(Modules.getSingleton().getString(s.getModuleName()));
            currfather.setId("menu_"+s.getModuleID());
            model.addSubmenu(currfather);
        }

        MenuItem mi = new MenuItem();

        mi.setValue(Modules.getSingleton().getString(s.getNAME()));
        mi.setId("_" + s.getKey());
        mi.setTarget("_self");
        mi.setTitle(Modules.getSingleton().getString(s.getNAME() + "_Description"));
        mi.setAjax(false);
        mi.setUrl(url);
        // Add parameters
        UIParameter param = new UIParameter();
        param.setName("moduleid");
        param.setValue(s.getKey());
        mi.getChildren().add(param);

        mi.setProcess("@all");
        currfather.getChildren().add(mi);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM