Tenho 1 paginas que eu uso para um cadastro e a pagina 1, seria a pagina ‘principal’ e a pagina 2, a pagina com os dados do cadastro.
Cada página utiliza um Backing-Bean distinto e quanto eu salvo, eu faço o seguinte método:
publicStringsalvarOperador(){...FacesContext.getCurrentInstance().addMessage("formulario",newFacesMessage("Operador Cadastrado Com Sucesso"));setTituloCabecalho("Cargas cadastradas");return"voltarEmpresa";
Consigo salvar o usuário numa boa, mas a FaceMessage não é renderizada quando eu retorno da página 2 para a página 1 e na página 1, tenho:
Dica 1: As mensagens de erro do JSF ficam no escopo de request
Dica 2: Evite a tag <redirect/> nas tuas regras de navegação. Utilize-a somente quando for necessário.
Abraços e boa sorte.
rbortolon
Olá a todos,
Me diz aí David, conseguiu resolver o seu problema ?
Eu estou enfrentando o mesmo. Meu código no managedBean está identico ao seu no caso de mostrar a mensagem e o redirect que no meu caso faço da seguinte forma -> return “/pages/login?faces-redirect=true” (meu formulário é um form de registro de usuário que redireciona para a página de login após sucesso)
Rafael, você mencionou que as mensagens ficam no escopo Request certo? O meu bean esta com este escopo mas mesmo assim, ao salvar os dados do formulário (clicar no botão ok) não mostra a mensagem. Só redireciona como mencionei no parágrafo acima. Vi alguns casos em que falaram que tenho que implementar um PhaseListener para recuperar as mensagens mas daí envolve ter que inserir a config no faces-config e eu não estou utilizando o faces-config pois um dos propósitos do JSF 2 é justamente não precisar dele certo? Bom, se precisar tudo bem, não que eu seja contra mas gostaria de saber se há uma solução diferente para este problema.
Obrigado!
Sds,
Rodrigo
rponte
Oi rbortolon,
Se você estiver trabalhando com JSF2 você pode utilizar o escopo FLASH para prolongar mensagens e objetos durante redirecionamentos. Dá uma pesquisa sobre isso, com certeza é melhor do que implementar seu próprio phase-listener.
O código seria algo do tipo:
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getFlash().setKeepMessages(true);
context.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "key1",
"key2"));
rbortolon:
Olá a todos,
Me diz aí David, conseguiu resolver o seu problema ?
Eu estou enfrentando o mesmo. Meu código no managedBean está identico ao seu no caso de mostrar a mensagem e o redirect que no meu caso faço da seguinte forma -> return “/pages/login?faces-redirect=true” (meu formulário é um form de registro de usuário que redireciona para a página de login após sucesso)
Rafael, você mencionou que as mensagens ficam no escopo Request certo? O meu bean esta com este escopo mas mesmo assim, ao salvar os dados do formulário (clicar no botão ok) não mostra a mensagem. Só redireciona como mencionei no parágrafo acima. Vi alguns casos em que falaram que tenho que implementar um PhaseListener para recuperar as mensagens mas daí envolve ter que inserir a config no faces-config e eu não estou utilizando o faces-config pois um dos propósitos do JSF 2 é justamente não precisar dele certo? Bom, se precisar tudo bem, não que eu seja contra mas gostaria de saber se há uma solução diferente para este problema.
Obrigado!
Sds,
Rodrigo
rbortolon
Olá Rafael,
Blza amigão, vou pesquisar hoje a noite e tentar implementar dessa maneira.