[Resolvido]Mensagem de sistema em componente primefaces growl não quer aparecer
18 respostas
K
kappa
Boa tarde caros amigos e amigas do GUJ, tenho uma aplicação em JSF2/FACELETS/… e nela estou com o seguinte problema:
Ao transitar de uma página X, após sistema realizar um processamento, e redirecionar para página Y, preciso mostrar uma mensagem, por exemplo:
‘Protocolo enviado com sucesso!’
Para isso estou usando o componente
<p:growl id="msg" showDetail="true"/>
No botão que dispara a ação, no atributo update estou colocando o id ‘msg’, conforme exemplo do site do Prime Faces.
No mbean também estou adiconando a mensagem conforme indicado no site, enfim, ele funciona quando continuo na mesma paǵina após a ação,
noutro caso, transitando entre páginas ele não funciona. Ja coloquei ele na página Y, tentei dar forward explícito mas infelizmente a quantidade de informações
que possuo não é suficiente para uma análise certeira sobre esse problema.
O redirect mata tudo que você tenha colocado no request (como mensagens para ser exibido para o usuário).
K
kappa
Não funcionou, fiz dois testes, com o grow na página X e depois na Y e…
FacesContext.getCurrentInstance().addMessage(form:id", new FacesMessage( FacesMessage.SEVERITY_INFO, "AVISO",Constantes.MSG_PROTOCOLO_TRAMITACAO_SUCESSO));
O redirect mata tudo que você tenha colocado no request (como mensagens para ser exibido para o usuário).
Vou testar aqui retirando o redirect, lembrando que o escopo do meu MBEAN é session, tb não uso navigation rules
e no comandButton que dispara a ação, uso actionListener…
O redirect mata tudo que você tenha colocado no request (como mensagens para ser exibido para o usuário).
Vou testar aqui retirando o redirect, lembrando que o escopo do meu MBEAN é session, tb não uso navigation rules
e no comandButton que dispara a ação, uso actionListener…
Tudo bem que ele é session, ele vai guardar todos os dados dentro dele (atributos).
Mas o ato de enviar uma mensagem não tem influência alguma da parte do MB (Requested, Session, Application). A não ser que você guarde a mensagem como um atributo String do seu MB e acabe por exibi-la.
K
kappa
Retirei o faces-redirect=true e ainda não funcionou, continuarei os testes aqui e se conseguirem novas explicações agradeço a todos… abç
H
Hebert_Coelho
Se você estava utilizando a navegação via redirect, imagino eu que você esta utilizando ajax. Estou certo? (coloca o código de como está o botão/link agora).
Tente retirar o ajax e fazer uma navegação normal, caso eu esteja certo. Se não a gente pensa em outra coisa.
Pois é. Vi que você ta utilizando 300 botões mas não sei qual é.
Mas como vi que você está utilizando o botão do primefaces lá vai a bomba. Ele utiliza o Ajax por padrão. [=
Faça o teste novamente retirando o redirect e adicionando a seguinte opção ao seu botão ajax=false (ou alguma coisa que tenha ajax escrito).
K
kappa
Infelizmente não funcionou, vou ver se consigo uma outra opção de componente para a minha necessidade… mas o padrão do meu sistema é o growl… Vamos ver no que dá… valew
H
Hebert_Coelho
Como ultima alternativa então, tenta criar a classe MultiPageMessagesSupport que eu te passei no link do post.
A
ATEN
Não sei se o problema ja foi resolvido, mas o growl com redirect nao funciona como nosso amigo disse. Então é necessario usar o flash
Aqui quando uso redirect e quero exibir o growl faço assim
facesContext.addMessage("cadOA",newFacesMessage("Objeto Cadastrado com Sucesso"));facesContext.getExternalContext().getFlash().setKeepMessages(true); //AQUI ELE MANTEM A MENSAGEMreturn"addToWel";
B
brother2402
Já foi respondido acima, desculpe.
A
Ataxexe
Antes de ressuscitar um tópico, dê uma olhada nas postagens. Você postou exatamente o que o ATEN já havia postado há mais de um ano.
B
brother2402
Desculpe, só quis ajudar porque encontrei somente agora a resposta. Eu não tinha visto a página 2, logo não tinha visto a resposta. Só depois que eu postei que apareceu acima.