Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Foward e Redirect

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 ?

1 resposta
solução!

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!