JSF + Filtro

Olá a todos,
Gostaria de desenvolver um filtro, todavia o jsf funciona por default em post, logo sempre que tento pegar a url que o usuario está indo, somente consigo a página que o usuario estava.
Existe algum modo de conseguir tomar a url da página que usuario esta indo???
Sei que atraves do método get é possível, mas gostaria de saber se há como construir um filtro e tomar a url que o usuario esta indo.

[]s

Tenta fazer assim:

Coloca isso “?faces-redirect=true” toda vez que for redirecionar o usuário e faz o filtro normalmente.

Ex:


pubic String redirecionar(){
     return "destino?faces-redirect=true";
}

Tenta aí. Valeu.

[quote=Daniel T.S]Tenta fazer assim:

Coloca isso “?faces-redirect=true” toda vez que for redirecionar o usuário e faz o filtro normalmente.

Ex:


pubic String redirecionar(){
     return "destino?faces-redirect=true";
}

Tenta aí. Valeu.[/quote]

Sim isso realmente vai funcionar, pois esta usando redirect a url da página realmente vai ser a do destino e no filtro conseguirei recuperá-la.
O problema desta abordagemé que se eu tiver um bean com o escopo @Request eu irei perder ele, logo teria que guardar ele em flash e fazer outros tratamentos.

Logo eu gostaria de saber se há algum jeito de conseguir a url de para onde o usuario esta indo seja em um filtro ou em um phase listener? Alguem sabe? Ou se é possivel fazê-lo?

[]s

[quote=ATEN][quote=Daniel T.S]Tenta fazer assim:

Coloca isso “?faces-redirect=true” toda vez que for redirecionar o usuário e faz o filtro normalmente.

Ex:


pubic String redirecionar(){
     return "destino?faces-redirect=true";
}

Tenta aí. Valeu.[/quote]

Sim isso realmente vai funcionar, pois esta usando redirect a url da página realmente vai ser a do destino e no filtro conseguirei recuperá-la.
O problema desta abordagemé que se eu tiver um bean com o escopo @Request eu irei perder ele, logo teria que guardar ele em flash e fazer outros tratamentos.

Logo eu gostaria de saber se há algum jeito de conseguir a url de para onde o usuario esta indo seja em um filtro ou em um phase listener? Alguem sabe? Ou se é possivel fazê-lo?

[]s
[/quote]

Acabei de tentar recuperar a url que o usuário está indo com um filtro utilizei um Bean com o escopo @Request e deu certo

Sim tomar a url vai funcionar como haviamos concordado, todavia os dados de escopo request vc perde de acordo com o esse post
http://www.rponte.com.br/2008/07/12/repitam-comigo-redirect-nao-e-forward/

[quote=ATEN]Sim tomar a url vai funcionar como haviamos concordado, todavia os dados de escopo request vc perde de acordo com o esse post
http://www.rponte.com.br/2008/07/12/repitam-comigo-redirect-nao-e-forward/[/quote]

Me desculpe, então eu acho que não entendi bem sua pergunta.

Não sei se será util mas vamos lá:

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
            FilterChain chain)
    {
	// Tudo acima acontece antes de carregar a página
        chain.doFilter(servletRequest, servletResponse);
	//Tudo abaixo acontece depois de carregar a página
    }

Sim como eu disse poderia fazer um filtro desta maneira ou fazer um Phase Listener e tomar a url, mas como disse jsf trabalha por default por metodo Post, logo eu nao teria como saber qual página que o usuario iria, pois a url nao muda. Alguem sabe se existe algum método ou alguma maneira para saber onde o usuario esta indo?

 @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
            FilterChain chain)
    {
	   // Tudo acima acontece antes de carregar a página 
            chain.doFilter(servletRequest, servletResponse);
           //Tudo abaixo acontece depois de carregar a página  

            HttpServletRequest res = (HttpServletRequest) request;
	    HttpServletResponse respo = (HttpServletResponse) response;
            String url = res.getServletPath(); // URL obtida é da pagina que usuario estava, como conseguir a url que o usuario esta indo????
	
    }

Cara quando eu executo isso recebo a url solicita e não a url que o usuário estava.

[quote=Daniel T.S]

Cara quando eu executo isso recebo a url solicita e não a url que o usuário estava.[/quote]

Daniel T.S, vc fez um form desta maneira :
Exemplo:

XHTML com um form, apenas para apertar no botao e ser redirecionado para outra pagina

...
<h:form prependId="false">
	<h:panelGrid columns="2"  styleClass="menu-login">
		<h:outputText value="#{msg.nome}: *" />
		<h:inputText  />
	        <h:outputText value="#{msg.senha}: *" />
		<h:inputText  />
								
	</h:panelGrid>
	<p:commandButton value="#{msg.login}" action="#{Login.action()}" />
</h:form>
...

Um Simples Bean para redirecionar para outra pagina

@ManagedBean(name="Login")
@SessionScoped
public class Login {
   
	public String action(){
		return "/publico/contato.jsf";
	}

}

Ao apertar no botao de login, será recuperado a url da página de login: “/publico/login.jsf”, quando na verdade o usuario estará na pagina “/publico/contato.jsf”.
Há alguma maneira de tomar esta url. Caso seja colocado redirect na url, é claro que aparecerá no filtro a url que o usuario foi, mas sem redirect, há como conseguir a url que o usuario foi?
é claro que apertar em um link, no filtro aparecerá a url que o usuario foi, mas em um form o metodo sendo post e sem redirect há como saber a url que o usuario foi no filtro?
[]s

Só pra ter certeza se eu entendi nesse caso você deseja recuperar no filtro a url “/publico/contato.jsf” e não “/publico/login.jsf” é isso?

Sim, isso mesmo, eu quero saber onde o usuario está indo, imagine se quisesse impedir de acessar alguma página, isto nao seria possivel desta maneira.

Sim, isso mesmo, eu quero saber onde o usuario está indo, imagine se quisesse impedir de acessar alguma página, isto nao seria possivel desta maneira.
[/quote]

Então cara é isso mesmo. Eu fiz um exemplo desse, e aconteceu exatamente o que você deseja foi impresso “/publico/contato.jsf” no filtro.
Olha só eu estou viajando mas quando chegar em casa vou postar um exemplo pra você vê se é isso, ok?