Rajat Gupta
Rajat Gupta

Reputation: 26607

How to programmatically do JSF internal page forward?

How to do JSF internal page forward programatically in managed bean, on some condition (like whenever an exception occurs)? I do not want to change the URL while forwarding to other page.

Right now I redirect to another page programmatically using this, but this changes the URL.

FacesContext.getCurrentInstance().getExternalContext().redirect();

Upvotes: 8

Views: 15327

Answers (3)

AngelAvila
AngelAvila

Reputation: 435

This is another way:

String jsfPath = "/home/HomePage.xhtml";

FacesContext fc = FacesContext.getCurrentInstance();
NavigationHandler nav = fc.getApplication().getNavigationHandler();
nav.handleNavigation(fc, null, jsfPath);

Upvotes: 0

Mr.J4mes
Mr.J4mes

Reputation: 9266

Try this:

public void forward(){
    String uri = "destination.xhtml";
    FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);
}

Upvotes: 8

Srikanth Ganji
Srikanth Ganji

Reputation: 1157

You can do using

   FacesContext.getCurrentInstance().getViewRoot().setViewId("your target view id");
   FacesContext.getCurrentInstance().renderResponse();   

or you can use

   FacesContext.getCurrentInstance().responseComplete();  

Hope this helps.

Upvotes: 1

Related Questions