Dúvida em JSF 2.0

Olá, quero saber como posso mapear o redirecionamento de páginas em JSF 2.0.
Desde já agradeço a atenção. :wink:

vc quer dizer assim:

public void doSomething() {
  return "mypage?faces-redirect=true";
}

Só pra falarmos a mesma lingua: eu entendo que redirect é diferente de forward, ok?

Então, a maneira explícita é o mesmo do JSF 1.x, você adiciona a tag dentro de , e o framework fará o redirect ao invés de forward.

Mas tem o forward implícito, que só existe na 2.0. Seguinte, suponha que você tenha um método assim (não compilei):

public String salva() {
    // faz alguma coisa
    return "sucesso";
}

Não havendo mapeamento explícito, a view mostrada é o sucesso.xhtml, através de forward.
Agora, se você acrescentar um parâmetro desse jeito:

public String salva() {
    // faz alguma coisa
    return "sucesso?faces-redirect=true";
}

Ele passa a fazer um redirect para sucesso.xhtml, não mais um forward.

É isso.

Olá Pessoal.

Achei interessante a explicação do Leonardo, mas só consigo fazer a navegação quando utilizo o redirect. Quando utilizo a navegação normal ou implícita, não abre a outra página.

Assim funciona:

Assim não funciona (clico no botão e a página não faz nada):

Tentei também colocar em um ManagedBean assim:

[code]@ManagedBean
@ApplicationScoped
public class Navegacao {

public String navegar(){

    return "/testenaveg";
}

}[/code]

e na página assim:

Mas não funciona. Só funciona com redirect. Alguém sabe o motivo?

Obrigado!

vc precisa colocar o atributo ajax do commandbutton como false:

<p:commandButton value="Navegar" action="testenaveg?faces-redirect=true" ajax="false"/> 

Obrigado amigo!

Já tinha resolvido este problema com um outro tópico, só faltou colocar resolvido!!rs

Aliás, vc escolhe se coloca redirect, ou tira redirect e coloca o ajax=“false” (ou um ou outro, todos 2 funcionam).

Até +!