Session scoped MB e FacesContext

Estou recebendo essa mensagem aqui: IllegalStateException toda vez que adiciono uma mensagem para ser exibido em um growl do primefaces.

Código: context.addMessage(null, new FacesMessage(messageLevel, message, message));

Toda vez que executo esse código utilizando um SessionScopedBean eu tenho esse erro, mas se eu executo esse código em um RequestScopedBean funciona na moral.

Estou utilizando Mojara 2 Primefaces 3.

Alguma idéia?

Valeu! [=

Bom dia, Hebert.
Você já sabe resolver essa situação?

Estou querendo adicionar uma validação no form, então coloquei um “required=true” no input e acabei recebendo esse illegalstateexception.
O controller, no meu caso , (eu acho, pois ainda estou aprendendo esses negócios de escopo) tem que ser ViewScoped.
Se eu mudar pra RequestScope ele não funciona.

Se eu não colocar o required no input, funciona normalmente.

[quote=Kura]Bom dia, Hebert.
Você já sabe resolver essa situação?

Estou querendo adicionar uma validação no form, então coloquei um “required=true” no input e acabei recebendo esse illegalstateexception.
O controller, no meu caso , (eu acho, pois ainda estou aprendendo esses negócios de escopo) tem que ser ViewScoped.
Se eu mudar pra RequestScope ele não funciona.

Se eu não colocar o required no input, funciona normalmente.[/quote]Resolvi, mas faz tanto tempo que nem lembro. =/

Sorry.

aiuehuigahe

valeu, cara.

ow. Parabéns pelo lançamento do livro =)
Não sei se vc lançou por agora (eu só vi por agora), mas o que vale é a intenção, né? hjahahha

abraços

[quote=Kura]aiuehuigahe

valeu, cara.

ow. Parabéns pelo lançamento do livro =)
Não sei se vc lançou por agora (eu só vi por agora), mas o que vale é a intenção, né? hjahahha

abraços[/quote]Valeu mano. [=

Cara… Não sei se vc pode me ajudar…

Primeiro: Descobri o problema. Fiz um @Produces do FacesContext e estava injetando esse objeto como atributo de classe do controller. Sendo que o controller é ViewScoped e o FacesContext, RequestScoped.

Agora minha dúvida:
Estou conseguindo mostrar lindamente a mensagem depois de ter deletado a DI do faces e ter usado o FacesContext.getInstance().
Mas isso só quando eu continuo na mesma página.

Quando o usuário digitar um cpf inválido (ainda adicionarei outras validações, claro), ele fica na mesma página.
Quando estiver tudo certo, ele redireciona pra outra página.
Nessa outra página, não consigo mostrar a msg.
Tudo funciona normalmente. Apenas a msg não é mostrada.
E estou mostrando as msgs pelo p:growl do primefaces 3

Sabe como consigo fazer isso?

Segue o trecho em questão do meu bean:

[code] public String save() {
FacesMessage msg;
if (!validaCpf(funcionario.getCpf())) {
adicionaMsg(FacesMessage.SEVERITY_ERROR, “CPF Inválido!”);
return “form?codigoFilial=” + funcionario.getFilial().getCodigo()
+ “&matricula=” + funcionario.getCodigo()
+ “&faces-redirect=true”;
}
funcionarioService.save(funcionario);
adicionaMsg(FacesMessage.SEVERITY_INFO, “Funcionário alterado com sucesso!”);
return “/funcionarios?faces-redirect=true”;
}

public void adicionaMsg(FacesMessage.Severity severity, String detalhe) {
    FacesMessage msg = new FacesMessage(severity, "", detalhe);
    FacesContext.getCurrentInstance().addMessage(null, msg);
    FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);
}[/code]

Eu tenho evitado responder questões de JSF pq levam muito tempo. =/

Uma coisa que ví é que você está usando ViewScoped com DI. Di não funciona cm ViewScoped.

Pode ser esse seu erro. Infelizmente não tenho como te ajudar mais. =/

hmmm.
que pena pq vc é o verdadeiro shaman do JSF! hahaha

Mas muito obrigado mesmo assim, cara! =)

Se eu descobrir, posto a solução.

Então, cara.
Achei a solução na sua página (http://uaihebert.com/?p=499).
Uma outra pessoa, num post mais específico, já havia me indicado, mas eu não havia entendido muito bem na hora.

Copiei e colei a classe MultiPageMessagesSupport e adicionei o lifecycle no faces-config.xml.
Funcionou lindamente.

Obrigado pela atenção! =D

[quote=Kura]Então, cara.
Achei a solução na sua página (http://uaihebert.com/?p=499).
Uma outra pessoa, num post mais específico, já havia me indicado, mas eu não havia entendido muito bem na hora.

Copiei e colei a classe MultiPageMessagesSupport e adicionei o lifecycle no faces-config.xml.
Funcionou lindamente.

Obrigado pela atenção! =D
[/quote]uia! boa! [=