Possível Bug no Richfaces ou JSF

8 respostas
cristianopagani

Olá a todos,

Estou com um pequeno problema em minha aplicação. O que acontece é o seguinte:

      - Em minha tela eu tenho 3 paineis e os renderizo separadamente para cada ação.
      - Quando estou com o 3º painel renderizado (esse é o meu cadastro) e clico em salvar parece que o ManagerBean é criado do zero novamente, como se fosse a primeira vez, ou seja, depois que clico em salvar volta para o primeiro painel sem chamar a minha action do botão.
      - Esse problema acontece raramente, geralmente o cadastro funciona normalmente.

      Pergunto se alguém sabe se existe algum bug sobre isso (ManagerBean perder o estado e voltar para o início em uma action) ?
      Estou usando. Richfaces 3.3.1, Hibernate 3.3, Firefox 3.6, Jsf 1.2 + Facelets 1.1.14

Se alguém souber, agradeço a ajuda pois não encontrei nada sobre isso no Guj nem na Net.

8 Respostas

guilhermehbueno

cristianopagani:
Olá a todos,

Estou com um pequeno problema em minha aplicação. O que acontece é o seguinte:

      - Em minha tela eu tenho 3 paineis e os renderizo separadamente para cada ação.
      - Quando estou com o 3º painel renderizado (esse é o meu cadastro) e clico em salvar parece que o ManagerBean é criado do zero novamente, como se fosse a primeira vez, ou seja, depois que clico em salvar volta para o primeiro painel sem chamar a minha action do botão.
      - Esse problema acontece raramente, geralmente o cadastro funciona normalmente.

      Pergunto se alguém sabe se existe algum bug sobre isso (ManagerBean perder o estado e voltar para o início em uma action) ?
      Estou usando. Richfaces 3.3.1, Hibernate 3.3, Firefox 3.6, Jsf 1.2 + Facelets 1.1.14

Se alguém souber, agradeço a ajuda pois não encontrei nada sobre isso no Guj nem na Net.

Olá,

Você verificou o escopo do teu MB? Ele está como Session??

O método chamado pela action do botão possui um retorno String e é utilizado por um <h:commandbutton…?

cristianopagani

Meu MB está no escopo de Requeste e sim a Action do h:commandButton retorna String (null, já que é pra mesma página).

guilhermehbueno

Opa,

Tenta colocar o seu escopo como session, isto já deve resolver seu problema.

Falow…

cristianopagani

Não posso colocar meu MB no escopo de Session pois irá prejudicar muito a memória no servidor. Esta aplicação é usada por muitos usuários, o estranho é que em média a cada 50 cliques no botão salvar apenas uma vez acontece esse erro. Por isso pergunto se alguém algum “bug” do Framework (jsf ou richfaces) nesse sentido.

Obrigado.

thokk

Use o keepalive.

Ta aí uma fonte, para vc usar como exemplo.

http://livedemo.exadel.com/richfaces-demo/richfaces/keepAlive.jsf?tab=usage&cid=210589

Ele consegue manter o estado do MB.

cristianopagani

Já estou utilizando o keepAlive, não é esse o problema. Vou tentar explicar melhor:

no meu .jspx tenho algo assim:
<h:commandButton action="#{meuBean.salvar}" value="Salvar" />

no Bean tenho algo ssim:

public String salvar() {
    Controlador c = new Controlador(this);
    if(s.salvar) {
       getPainelMensagemSuccess().rendered(true);
        getPainelMensagemError().rendered(false);
    } else {
        getPainelMensagemSuccess().rendered(false);
        getPainelMensagemError().rendered(true);
    }
    return null;
}

Isso está funcionando corretamente, mas algumas vezes o meu método salvar não é chamado e a tela volta para o início sem salvar nada.

thokk

Vc está usando o navigation handler?

cristianopagani

Sim, eu utilizo regras de navegação no faces-config.xml. Mas não tenho nenhuma regra quando o submit é para a mesma página, eu simplismente retorno null no método da action.

Criado 19 de maio de 2010
Ultima resposta 21 de mai. de 2010
Respostas 8
Participantes 3