Deixa eu ver se eu entendi bem,
Para ser Redirect eu preciso passar o "?faces-redirect=true" do lado do servidor. Já no Foward o "?faces-redirect=true" é passado na tag dentro do no atributo action="" ?
Qual é melhor e mais utilizado ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Deixa eu ver se eu entendi bem,
Para ser Redirect eu preciso passar o "?faces-redirect=true" do lado do servidor. Já no Foward o "?faces-redirect=true" é passado na tag dentro do no atributo action="" ?
Qual é melhor e mais utilizado ?
Fala Julio, tudo bem ?
Quando queremos fazer um forward apenas passamos na action para qual página queremos navegar.
<h:form>
<h:commandButton action="outraPagina" value="Outra Página" />
</h:form>
Já no caso do redirect precisamos adicionar o parâmetro faces-redirect=true na action. Dessa forma ao final da requisição o servidor ao invés de apresentar o conteúdo da outra página (como no forward), vai mandar o browser realizar uma nova requisição pra essa outra página.
<h:form>
<h:commandButton action="outraPagina?faces-redirect=true" value="Outra Página" />
</h:form>
Ambos tem sua utilização. O caso do redirect é mais recomendado em situações onde precisamos que o navegador (cliente web) seja forçado a fazer um nova requisição, esquecendo a anterior. Por exemplo, quando acabamos de enviar dados através do método POST. Se apenas deixarmos o servidor enviar o conteúdo da nova página, o browser vai continuar sabendo que a última requisição foi o POST com o conteúdo do form. Assim, um simples F5 do usuário força o navegador a reenviar os mesmos dados. Com redirect, resolvemos esse problema. Como o browser é forçado a fazer uma nova requisição pra nova página, qualquer F5 repete a requisição apenas pra essa página, sem um risco de reenvio de informações.
Isso é tão comum que até virou um mandamento da web -> Always Redirect After Post.
Espero ter ajudado. Abraço!