Tenho um modal panel que é aberto para alterar dados de um cliente. quando clico no botão salvar que está dentro deste modal, volta pra tela que tem a lista de clientes já com o registro atualizado. O problema é que deveria aparecer uma mensagem de alterado com Sucesso, mas a mesma não é exibida… Agradeço qualquer ajuda!! O código tá ai pessoal…
Método que realiza a alteração e manda mensagem de sucesso
public String atualizarClientes() throws SQLException, BatchUpdateException{
try{
BOCliente bo = new BOCliente();
bo.atualizar(clientes);
FacesContext.getCurrentInstance().addMessage("messages",
new FacesMessage ("Registro alterado com sucesso!"));
}catch (Exception e) {
e.printStackTrace();
FacesContext.getCurrentInstance().addMessage("erro",
new FacesMessage ("Falha ao alterar registro!"));
}
return null;
}
a4j:command button alterar que tá dentro do meu modal
Ah, já tentou deixar o primeiro argumento de addMessage como null?
Acho que como não existem componentes com valor de id igual a messages ou erro o Faces nem sabe para onde começar a enviar a mensagem.
O problema é que você está usando um botão Ajax (a4j:commandButton) e um componente de mensagens padrão (h:messages), que só é re-renderizado quando ocorre carregamento na página.
Os dois precisam “combinar”, ou seja:
Use a4j:commandButton e rich:messages caso sua intenção seja fazer uma chamada Ajax
ou
Use h:commandButton e h:messages caso esteja tentando fazer uma página que recarrega após a requisição
[quote=dedetrix]mas estao combinando segue um trecho do codigo
<h:column>
<h:commandButton styleClass="button" value="Salvar"
action="#{userHandler.saveUser}" id="cadastrar" >
</h:commandButton>
<div align="center"><h:messages showDetail="false" showSummary="true" layout="table" /></div>
</h:column>[/quote]
Realmente esse não é o erro no seu caso, eu estava me referindo à questão original do kelvis.
Falando do seu código, ele tem um erro que pode fazer com que a mensagem esteja “sumindo”.
É a chamada “exceção engolida”. Repare que se algo ocorrer, é dado um printStackTrace() e a execução continua normalmente, ou seja, ninguém nunca vai saber que algo errado aconteceu.
Coloque uma mensagem de erro para o usuário nesse ponto também!
a parte de mesangem de erro funciona normalmente mas oq eu mais queria msm e q aparecesse uma mensagem de sucesso de erro funciona na boa, se vc tiver um outra ideia para uma soluçao deste tipo me ajudaria