Olá, quero saber como posso mapear o redirecionamento de páginas em JSF 2.0.
Desde já agradeço a atenção.
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é +!