Primefaces menubar não renderiza certo após submit
14 respostas
regisleandro
Tenho um menu dinâmico construido com primefaces. Logo na sua primeira execução tudo é executado perfeitamente. Mas se clicar em algum botão que de um submit em qualquer form o menu é renderizado errado, os itens de menu desaparecem
eis o codigo html
<h:form>
<p:outputPanel id="panelMenus">
<p:menubar autoSubmenuDisplay="false"
model="#{UsuarioMB.menubar}"
rendered="#{UsuarioMB.usuario.codPessoa>0}">
</p:menubar>
</p:outputPanel>
</h:form>
e o código que gera os menus
if (tag == menu.getTag()) {
if (menu.getNivel() == 1) {
m = new Submenu();
m.setLabel(menu.getDescricao());
m.setId("menu" + menu.getCodMenu().toString());
} else {
mi = new MenuItem();
mi.setValue(menu.getDescricao());
mi.setUrl("/faces/" + menu.getPaginaWeb());
mi.setId("menuItem" + menu.getCodMenu().toString());
mi.setAjax(false);
m.getChildren().add(mi);
}
} else {
tag = menu.getTag();
m = new Submenu();
m.setLabel(menu.getDescricao());
m.setId("menu" + menu.getCodMenu().toString());
}
menubar.addSubmenu(m);
}
e as imagens dos comportamentos dos menus:
antes do submit
e depois do submit
Será algum problema do primefaces ou estou com alguma coisa errada nos meus códigos?
Agradeço a atenção
ele esta usando o componente do ajax e pelo que eu sei o ajax nao redireciona pagina…
me corrijam se eu estiver errado!!
se resolver posta aqui
regisleandro
Valeu cara, mas já faço isso em mi.setAjax(false);. Ainda não encontrei uma solução a contento…
takeshi_spoow
Pelo visto você segue uma linha de raciocinio diferente para criar uma menubar.
Creio que você quer que ao clicar em um MenuItem sejam atualizados os dados numa determinada região da pagina certo?
tente criar algo como:
<p:menubar><p:submenulabel="Sistema"><p:menuitemvalue="Ação1"action="#{seuMB.acao1}"/><p:menuitemvalue="Ação2"action="#{seuMB.acao2}"update="algumComponente"/></p:submenu></p:menubar><p:panelid="algumComponente"><!-- O RESTO DOS ITENS --></p:panel>
Sei que assim parece ser mais trabalhoso, porém voce não precisará em tratar o item selecionado. Você poderá criar este menu somente uma vez num arquivo à parte e importá-lo nas suas outras paginas usando a ui:include
Caso queira algo um pouco mais complexo. Podes definir as propriedades “rendered” de cada submenu ou menuitem pela camada de Controle.
Espero ter ajudado!
C
Cesar_Pizolato
regisleandro,
Estou tentando montar um menu dinâmico também, só que o meu não aparece na tela, aparece somente um menu fininho com as opções, de onde vem seu import do UsuarioMB.menubar ?
Conseguiu resolver o seu problema? Caso sim, como? Pode ser que eu tenha o mesmo quando monstar o menu.
C
ccllss
Regis,
Conseguiu resolver este problema?
Estou tendo passando pela mesma situação…
@braços
C
Cesar_Pizolato
ccllss:
Regis,
Conseguiu resolver este problema?
Estou tendo passando pela mesma situação…
@braços
Tente
ajax="false"
C
ccllss
Olá Cesar,
Como disse o Regis:
Eu estou fazendo isso “.setAjax(false)” qdo construo dinamicamente o menu, gerando um model e aplicando no menubar.
Se der um submit na página ele não renderiza mais os itens do menu que está na sessão.
@braços
Não lembro o que eu fiz então, estou no trabalho agora sem o fonte. Anoite quando chegar em casa coloco minha classe aqui para você. Eu lembro que era alguma bobeira, tipo a ordem de alguma coisa, rsrsrs.
C
ccllss
Legal Cesar… Agradeço!
@braços
giorgialberto
Pessoal estou construindo uma aplicação onde tenho um template full page e no top desse layout tenho um menubar. Quero quando acionar o menuitem (ajax) o meu contener central atualize (apenas ele). Teria como alguém me ajudar? Exemplos? Grato pela atenção de todos.
J
jadirrlima
regisleandro,
Estou com o mesmo problema…alguém conseguiu resolver?
camolesi
Estou com o mesmo problema…alguém conseguiu resolver?