Dúvida básica em JSF

Ola pessoal estou aprendendo JSF e surgiu uma dúvida quando estava estudando navegação estática e navegação dinâmica.
tenho uma página principal “welcomeJSF.jsp”:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>
<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>Entrada de dados</title>
        </head>
        <body>
            <h:form>
                <h:panelGrid columns="2">
                    <h:outputLabel value="Digite seu nome: "/>
                    <h:inputText value="#{pessoa.nome}"/>
                    <h:outputLabel value="Digite sua senha: "/>
                    <h:inputSecret value="#{pessoa.senha}"/>
                    <h:commandButton value="Enviar" action="#{pessoa.login}" />
                </h:panelGrid>
                
                <br/>
                <h:commandLink value="Sobre" action="sobre" />
            </h:form>
            
        </body>
    </html>
</f:view>

Que possui um command button que se a senha e o usuário estiver correto vai para página sucesso e caso não vai para página falha.

E um link para página sobre “sobre.jsp”:

<%-- 
    Document   : sobre
    Created on : 26/07/2011, 00:33:30
    Author     : foreverjuba
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<f:view>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Sobre o Sistema</title>
    </head>
    <body>
        <h1>Programadores participantes!</h1>
        <h1>Alexandre</h1>
        <h1>Juliana</h1>
        <h1>Juliana</h1>
        <h1>Juliana</h1>
       <h:form>
        <h:commandLink value="Home" action="home" />
        </h:form>
    </body>
</html>
</f:view>

Onde nesta página tem um link Home que volta para página principal.
Faces-Config

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <managed-bean>
        <managed-bean-name>pessoa</managed-bean-name>
        <managed-bean-class>com.bean.PessoaBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

    <navigation-rule>
        <from-view-id>/welcomeJSF.jsp</from-view-id>

       <navigation-case>
            <from-outcome>sucesso</from-outcome>
            <to-view-id>/sucesso.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>falha</from-outcome>
            <to-view-id>/falha.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>


    <navigation-rule>
        <navigation-case>
            <from-outcome>sobre</from-outcome>
            <to-view-id>/sobre.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <navigation-case>
            <from-outcome>home</from-outcome>
            <to-view-id>/welcomeJSF.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

A duvida é a seguinte:
Ao clicar no command link ‘sobre’, vai para página ‘sobre.jsp’ porém na url fica o endereço da pagina origem, no caso welcomeJSF. Ao clicar em home para voltar para página principal, vai para página welcomeJSF porém fica o endereço de ‘sobre’. Não teria como evitar isto? pois desta forma quando o usuário clica em F5 na página ‘sobre’ vai para página welcomeJSF e quando o usuário clica em F5 na página welcomeJSF que acabou de vir de ‘sobre’, vai para página ‘sobre’. Esquesito.
Ou seja, quando navego na url fica o endereço da página que chamou aquele link.

Grato,

Alexandre

Por padrão o JSF utiliza um foward para fazer a navegação da páginas.

Para fazer com que o browser troque a url vc precisa dizer ao JSF para usar redirect na navegação.

Para isso basta colocar a tag redirect no navigation case.

  <navigation-case>  
            <from-outcome>sobre</from-outcome>  
            <to-view-id>/sobre.jsp</to-view-id>
            <redirect />  
  </navigation-case>

Aqui está explicando esse caso com maior detalhes.

Porém isto pode lhe causar alguns problemas para exibir mensagens do facesContext, de uma olha nisso
http://shrubbery.mynetgear.net/c/display/W/Redirect-after-post

olha isso http://blogs.oracle.com/enterprisetechtips/entry/post_redirect_get_and_jsf

cara eu quebrei a cabeça com isso esses dias, fiquei uma semana em cima disso com um camarada que participa do forum aqui tbem q me ajudou bastante, recomendo ler os dois tópicos abaixo, pelo menos eu entendi ± como as coisas funcionam, kkkkk

http://www.guj.com.br/java/247084-login-aplicacao-jsf—resolvido
http://www.guj.com.br/java/247653-nova-versao-do-jsf-2-nao-dispara-o-forward-na-navegacao-das-paginas-xhtml-resolvido#1284961

vlw t+

Valeu Galera, brigadão. :smiley: :smiley: :smiley: