Dúvida com a navegação do JSF

Caros,

Acontece algo meio estranho com o projeto que estou trabalhando em JSF,

eu tenho o seguinte código:

if(flag){
                    FacesContext context = FacesContext.getCurrentInstance();
                    HttpSession sessao = (HttpSession) context.getExternalContext().getSession(true);
                    sessao.setAttribute("usuario", objColaborador);
                    return "/principal/index.jsf";
                } else {

ele me redireciona para um diretorio principal com minha index e isso funciona, ele abre a página, o problema eh que na url ele mantem a URL anterior, ou seja, Login.jsf. Alguem sabe o porque naum aparece

http://localhost/NomeDoProjeto/principal/index.jsf?

Cara ja sofri com esse problema tambem é acredito não ter uma solução pratica a não ser com javascript mas ai o direcionamento tem que ficar na sua pagina não nos metodos, uma ideia que te dou é usar um iframe na sua pagina principal para que mantenha sempre a mesma url no browser ninguem vai ver a url da pagina em que esta…

Valeu
Wolmir Garbin

Coloque a tag dentro do arquivo Faces-config.xml(arquivo de configuração do jsf), isso atualizará sua url em toda a requisição.
Exemplo:

<navigation-rule>
  <from-view-id>/admin/*</from-view-id>
  <navigation-case>
   <from-outcome>formProduto</from-outcome>
   <to-view-id>/admin/formProduto.jsp</to-view-id>
   <redirect />
  </navigation-case>
</navigation-rule>

Valeu leonardodar, não sabia disso e ja me bati bastante por causa disso…
Vivendo e aprendendo hehehe
Valeu!

Wolmir Garbin

Caro, o lance do redirect no xml eh a solução pra url, mas ele causa uns problemas adicionais, como o fim do Mbean, reinstanciando o objeto e zerando seu conteudo. uso jsf 2.0 e naum uso mais o xml. mas vou fazer uma divisão aqui. quando precisar do MB eu dou dispacher, quando naum precisar mais dou redirect pra mudar a url e zera-lo, naum sei se e o correto a se fazer.