Boa tarde!
Acredito que seja uma coisa fácil de resolver, porém ainda estou batendo a cabeça.
Fiz uma página simples, só para testes. Nesta página tenho dois paineis, cada um com um botão.
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<head>
<title>Teste</title>
</head>
<body>
<f:view>
<h1><h:outputText value="Teste" /></h1>
<h:form id="form">
<h:panelGroup id="painel" rendered="#{!testeBean.trocaPainel}">
<h:commandButton value="Enviar Teste1" actionListener="#{testeBean.enviarTeste}" />
</h:panelGroup>
<h:panelGroup id="painel2" rendered="#{testeBean.trocaPainel}">
<h:commandButton value="Enviar Teste2" actionListener="#{testeBean.testeEnviado}" />
</h:panelGroup>
</h:form>
</f:view>
</body>
</html>
Meu Bean:
import javax.faces.event.ActionEvent;
public class TesteBean
{
private boolean trocaPainel = false;
public boolean isTrocaPainel()
{
return trocaPainel;
}
public void enviarTeste(ActionEvent event)
{
if (!trocaPainel)
{
trocaPainel = true;
}
System.out.println("Enviar Teste");
}
public void testeEnviado(ActionEvent event)
{
if (trocaPainel)
{
trocaPainel = false;
}
System.out.println("Teste Enviado");
}
}
O problema: quando clico no botão “Enviar Teste1” o método enviarTeste() é chamado, o valor booleano alterado e o texto “Enviar Teste” aparece no console.
Quando a tela é atualizada o "painel2 " é renderizado juntamente com o botão “Enviar Teste2”, quando clico acontece nada. O método testeEnviado() não é chamado, já tentei em modo debug e realmente não é chamado.
Alguma dica?
Atte.