H:commandLink fecha a sessão no JSF 2.0

8 respostas
R

Olá pessoal, ainda estou me adaptando às mudanças do JSF 2.0 e percebi um detalhe peculiar que está me atrapalhando.
Percebi que ao usar a tag <h:commandLink> para redirecionar o browser para outra página ele simplesmente fecha a sessão, fazendo com que meus Manged Beans se percam, gostaria de saber se há alguma forma de resolver isso.

Percebi que se usar a tag funciona normal, mas eu tenho nescessidade de executar determinados métodos antes de redirecionar a página.
Exemplo: os dois links deveriam fazer a mesma coisa mas apenas o primeiro redireciona a página corretamente, o segundo faz aparecer um erro dizendo:“Session Is Closed!”

<a href="link.xhtml">redirecionar</a><br />
         <h:commandLink action="link.xhtml" value="redirecionar" />

Obrigado pela atenção.

8 Respostas

otaviojava

Tenta colocar apenas o nome da páinga.

<h:commandLink action="link" value="redirecionar" />
R

Tentei deixar do jeito que vc me disse, sem extensão.Não deu Certo
no caso eu uso o JSF 2.0 e não estou usando faces_config, Tem algum parámetro que devo colocar no web.xml que faça a sessão permanecer aberta?

rafaelvascon

Está usando sessionscoped ou requestscoped em seu bean?

otaviojava

Para ficar numa sessão eu coloco como sessão escopo

ManagedBean
@SessionScoped
public class ObjetcController{
//...
}
R

SessionScoped, mas intencionalmente pois o MB em questão tem certos métodos que me obrigam a usá-lo pela sessão.

O problema não está exatamente no MB e sim nos h:commandLInk, pois ao redirecionar ele encerra a sessão.

R

Alguma sugestão?

otaviojava

Tanta fazer isso:

<h:form >
                   <h:commandLink action="link" value="redirecionar"/> 
                    </h:form>
R

Fucei um pouco mais e descobri que o problema em questão é um pouco mais complexo, trata-se de um erro no filtro e no caso a sessão não é a HttpSession e sim Sessão do Hibernate.Vou ver uma pssível solução.Mas de qualquer forma obrigado pela a tenção.

Criado 14 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 8
Participantes 3