Olá Caros Amigos,
Have a nice day!
O meu problema é o seguinte: estou usando a biblioteca Primefaces para construir a interface gráfica de um sistema, e o meu objetivo é usar um dos recursos disponíveis para fazer aparecer e desaparecer um submenu, quando um dos temas do menu é clicado. O problema é que não está funcionando usando commandButton. O meu objetivo é clicar no menu item com id=“produtos” e ao fazer isso ele aciona a ação no coomandButton que alterará o atributo de visibilidade no menu com id=“menuItensDeCadastro”.
Se alguém souber alguma outra forma melhor de resolver este problema, eu agradeço. O meu problema central é, fazer um submenu aparecer com um clique num dos temas do menu, e desaparecer se outro é dado no mesmo tema.
Segue abaixo o meu código fonte:
<h:body>
<h:form class="menuLogon">
<h:panelGrid columns="2">
<p:menu>
<p:submenu styleClass="submenu" label="Nome_do_Usuário">
<p:menuitem styleClass="menuitem" value="Carrinho de Compras" />
<p:menuitem styleClass="menuitem" value="Meus Pedidos" />
<p:menuitem styleClass="menuitem" value="Meus dados" />
<p:menuitem styleClass="menuitem" value="Sair" />
</p:submenu>
<p:submenu styleClass="submenu" label="Livraria">
<p:menuitem styleClass="menuitem" value="Configurar Livraria" />
<p:menuitem styleClass="menuitem" value="Mídias Pendentes" />
<p:menuitem type="button" id="produtos" styleClass="menuitem" value="Produtos" onclick="mostrarOuEsconderMenuItensDeCadastro()"/>
<p:menuitem styleClass="menuitem" value="Temas" />
<p:menuitem styleClass="menuitem" value="Relatórios" />
<p:menuitem styleClass="menuitem" value="Anúncios" />
</p:submenu>
<p:submenu styleClass="submenu" label="Clientes">
<p:menuitem styleClass="menuitem" value="Clientes" />
<p:menuitem styleClass="menuitem" value="Simular Cliente" />
<p:menuitem styleClass="menuitem" value="Pedidos" />
</p:submenu>
</p:menu>
<!-- ESTE É O MENU QUE DEVE APARECER E DESAPARECER NA TELA COM UM CLIQUE NO menuitem com id="produtos" -->
<p:menu id="menuItensDeCadastro" styleClass="menuItensDeCadastro" rendered="#{gamb.mostrarMenuItensDeCadastro}">
<p:menuitem styleClass="menuitem" value="" rendered="false" /><!-- Não alterar!!! -->
<p:menuitem styteClass="menuitem" value="Cadastrar Produto" />
<p:menuitem styteClass="menuitem" value="Consultar Produto" />
</p:menu>
<p:remoteCommand process="@this" name="mostrarOuEsconderMenuItensDeCadastro" update="menuItensDeCadastro">
<f:setPropertyActionListener target="#{gamb.mostrarMenuItensDeCadastro}" value="#{true}"/>
</p:remoteCommand>
</h:panelGrid>
</h:form>
</h:body>
Este é um bean criado pra testar mesmo a funcionalidade antes de fazer o código final, por isso coloquei um nome bem ilário.
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="gamb")
@RequestScoped
public class Gambiarra implements Serializable{
private boolean mostrarMenuItensDeCadastro = false;
public boolean getMostrarMenuItensDeCadastro() {
mostrarOuEsconderMenu2();
return mostrarMenuItensDeCadastro;
}
public void setMostrarMenuItensDeCadastro(boolean mostrarMenuItensDeCadastro) {
this.mostrarMenuItensDeCadastro = mostrarMenuItensDeCadastro;
}
/*private void mostrarOuEsconderMenu() {
// TODO Auto-generated method stub
if(mostrarMenuItensDeCadastro == "hidden"){
setMostrarMenuItensDeCadastro("visible");
}else{
setMostrarMenuItensDeCadastro("hidden");
}
}*/
private void mostrarOuEsconderMenu2() {
// TODO Auto-generated method stub
if(mostrarMenuItensDeCadastro == false){
setMostrarMenuItensDeCadastro(true);
}else{
setMostrarMenuItensDeCadastro(false);
}
}
}
Obrigado por sua atenção se leu este post e não se interessou em me ajudar!
MUITO Obrigado a você se leu este post e dedicou uma parte do seu tempo a me ajudar postando uma sugestão de solução!
Atenciosamente!