MenuBar do primefaces - Duvidas

2 respostas
cleiton_herrmann
Olá a todos, bom, reparem no meu código abaixo e nos comentarios, esse código monta o menu do site de acordo com as permissões do usuário...
public MenuModel getMenu() {
        //---------- pego as paginas que o cara tem acesso ----------
        HttpSession ses = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        acessos = (List<Acessos>) ses.getAttribute("acessos");
        
        //---------- busco os menus do sistema ----------
        List<Menus> menus = new ArrayList<Menus>();
        Criteria c = hu.getCriteria(Menus.class);
        c.addOrder(Order.asc("nome"));
        menus = dao.listarCriteria(c);
        hu.commitTransaction();
        
        menu = new DefaultMenuModel();
        
        //---------- crio o menuitem que retorna para pagina inicial ----------
        MenuItem miIndex = new MenuItem();
        miIndex.setValue("Página inicial");
        miIndex.setUrl("/faces/index.xhtml");
        miIndex.setId("mi_" + miIndex.hashCode());
        miIndex.setUpdate("messages,panelTopo,lCentro,usuario,listaProdutos,filtro,orcamentoDetalhe,categorigasPromocionais,categorigas");
        miIndex.setAjax(false);
        menu.addMenuItem(miIndex);
        
        //---------- Crio um submenu vazio ----------
        Submenu sub = new Submenu();
        menu.addSubmenu(sub);
        
        //---------- crio os submenus e seus respectivos menuitens ----------
        for (Menus m : menus) {
            Submenu s = new Submenu();
            s.setLabel(m.getNome());
            for (Acessos a : acessos) {
                if (a.getPaginasRestritasIdpaginasrestritas().getMenusIdmenus().getIdMenus().longValue() == m.getIdMenus().longValue()) {
                    MenuItem mi = new MenuItem();
                    mi.setValue(a.getPaginasRestritasIdpaginasrestritas().getTitulo());
                    mi.setUrl(a.getPaginasRestritasIdpaginasrestritas().getUrl());
                    mi.setId("mi_" + a.hashCode());
                    s.getChildren().add(mi);
                }
            }
            menu.addSubmenu(s);
        }
        
        //---------- crio um menuitem que faz logoff ----------
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ELContext elContext = facesContext.getELContext();
        ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
        MethodExpression methodExpression = expressionFactory.createMethodExpression(elContext, "#{mBUsuarioLogado.logout()}", null, new Class[] {ActionEvent.class});
        
        MenuItem miSair = new MenuItem();
        miSair.setActionExpression(methodExpression);
        miSair.setValue("Sair");
        miSair.setId("mi_" + miSair.hashCode());
        miSair.setUpdate("messages,panelTopo,lCentro,usuario,listaProdutos,filtro,orcamentoDetalhe");
        miSair.setAjax(false);
        menu.addMenuItem(miSair);
        
        return menu;
    }
Primeira duvida - Porque o menuitem "Pagina Inicial" fica depois dos submenus ? EX: ( Cadastros - Consultas - Outros - Pagina Inicial - Sair ) eu quero q ele fique antes, ou na ordem q eu adicionar, tem alguma configuração pra isso ?

Segunda duvida No mozilla firefox mais atual, funciona normal, mas no google chrome o primeiro submenu aparece com a seguinte configuração no css (left: -67) o que corta a metade do submenu, tem alguma coisa q pode ser feita ?

Obs: Por enquanto eu criei aquele submenu vazio na frente pra nao ficar cortando....

2 Respostas

cleiton_herrmann

tentei colocar uma configuração de css left: 0px; mas nao adiantou…

W

Há uma issue no primefaces em relação a este problema: http://code.google.com/p/primefaces/issues/detail?id=2022

não sei se alguém fez algum workaround até agora.

Criado 20 de setembro de 2011
Ultima resposta 23 de set. de 2011
Respostas 2
Participantes 2