动态菜单primefaces 4.0

Posted

技术标签:

【中文标题】动态菜单primefaces 4.0【英文标题】:Dynamically menu primefaces 4.0 【发布时间】:2014-10-13 17:44:55 【问题描述】:

我正在尝试动态生成菜单栏,我已经得到了结果,但是我有一个方法来检查 DefaultSubMenu 是否已经存在,如果子菜单存在,则不必创建它,它必须返回该子菜单,但是找到时会不断生成相同的子菜单,这就是方法

 public DefaultSubMenu buildSubMenu(OpcionesMenu opcionPrincipal) throws Exception
    DefaultSubMenu subMenu=null;

    try 
        if(getMenu()==null)
            DefaultSubMenu newSubmenu=new DefaultSubMenu(opcionPrincipal.getIdOpcionMenu().toString());
            newSubmenu.setId(opcionPrincipal.getNombreMenu());

            newSubmenu.setIcon(opcionPrincipal.getIcono());
            newSubmenu.setLabel(opcionPrincipal.getNombreMenu());
            subMenu= newSubmenu;
        else
            //Checking the list of DefaultSubMenu
            List<MenuElement> opciones=getMenu().getElements();
            boolean validador=false;
            for (MenuElement me : opciones) 

                if(me.getId().equals(opcionPrincipal.getNombreMenu()))

                    validador=true;// if it is found
                    subMenu=(DefaultSubMenu)me;
                
            
            if(!validador)if not found i create the submenu

                    DefaultSubMenu newSubmenu=new DefaultSubMenu(opcionPrincipal.getIdOpcionMenu().toString());
                    newSubmenu.setId(opcionPrincipal.getNombreMenu());
                    newSubmenu.setIcon(opcionPrincipal.getIcono());
                    newSubmenu.setLabel(opcionPrincipal.getNombreMenu());
                    subMenu=newSubmenu;
            
        
        return subMenu;

     catch (Exception e) 
        throw new Exception(
                "Error en la clase UsuarioOpcionMenuController - metodo buildSubMenu\n"
                        + e.getMessage(), e.getCause());
           

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

假设opcionPrincipal.getNombreMenu()返回菜单选项名称和me.getId()返回相同的东西,你可以改变比较条件:

发件人:

me.getId().equals(opcionPrincipal.getNombreMenu())

me.getId().equalsIgnoreCase(opcionPrincipal.getNombreMenu())

您(据我所知)在比较 Strings 而不是对象。

参见this(equals 方法的描述)和this(equalsIgnoreCase 方法的描述)。

【讨论】:

让我试试@Cold,我会告诉你的 Same @Cold,我找到了 SubMenu,问题是我返回了我刚刚找到的子菜单,但它似乎被视为一个新的,我不想那样,我想添加同一个 SubMenu 中的更多项目......我曾在 Primefaces 3.4 工作过...... 好的。为什么找到子菜单后不返回?如果你已经找到你想要的,你就不需要检查验证器了吗?

以上是关于动态菜单primefaces 4.0的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces:如何在 primefaces 3.5 中为菜单栏设置粘性

React 动态菜单

PrimeFaces p:tree使用自定义图标

wpf 如何实现动态伸缩菜单?

VUE--ElementUI--动态菜单+路由(五)

delphi 动态添加系统菜单