Jboss Seam - Redirecionamento por timeout de conversation

5 respostas
thiagocg

Olá pessoal bom dia!
Não sei se este titulo é o mais correto mas estou com a seguinte duvida, como faço para ter redirecionamentos diferentes quando minha conversação é finalizada por “timeout”?

Por exemplo, tenho um minhas views em uma pasta /restrito que redirecionam para o login caso a conversação seja encerrada por tempo de inatividade.

Mas eu tenho tb uma outra pasta /publico que possuem paginas que não precisam de login para serem usadas mas que eu uso componentes com escopo de conversação tb. Minha duvida esta neste caso, pois eu preciso redirecionar para uma outra pagina que não a de login caso a conversação seja encerrada por inatividade.

Hoje do jeito que esta o usuário das paginas do diretorio publico são direcionados para a pagina de login.

Grato a todos!

[]'s

5 Respostas

balrog

poste seu pages.xml

thiagocg

Segue meu pages.xml

<pages xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"
	login-view-id="/login.xhtml">

	<page view-id="/restrito/*" login-required="true" />

  ...

  <exception class="org.jboss.seam.security.NotLoggedInException">
      <redirect view-id="/login.xhtml">
          <message>Por favor, informe seus dados.</message>
      </redirect>
  </exception>
  
  <exception class="javax.faces.application.ViewExpiredException">
      <redirect view-id="/login.xhtml">
          <message>Sua sessão expirou, por favor entre novamente.</message>
      </redirect>
  </exception>

  ...

</pages>

onde as … reference ao mapeamento de outras excessões.

Grato pela resposta!

balrog

uma coisa que vc pode fazer eh definir uma view padrao, i.e. home.xhtml (que esteja dentro da sua area publica) esta view padrao estaria setada em um componente de escopo sessao, e caso seu usuario se loga na aplicacao, vc sabe que quando a sessao expirar, vc tem que mandar ele para a tela de login e dentro do seu pages vc faz a referencia ao componente.viewId que vc setou na sessao

thiagocg

Acho que entendi sua ideia, mas como ficaria caso o usuario tentasse acessar diretamente pela url uma pagina, assim eu não teria ainda criado o componente com o escopo de sessão.
Como a aplicação saberia para qual view mandar ja que o compontente que guarda a view não estaria criado?

Se não entendi me perdoe.

Grato pelo apoio!

[]'s

balrog

nao ha problema algum, vc pode checar se o componente esta setado ou nao usando EL, caso estiver vc usa o que esta setado la, caso nao estiver vc simplesmente manda ele para uma pagina qualquer, i.e. home.xhtml

Criado 13 de setembro de 2010
Ultima resposta 15 de set. de 2010
Respostas 5
Participantes 2