Reputation: 26607
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
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
Reputation: 9266
Try this:
public void forward(){
String uri = "destination.xhtml";
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);
}
Upvotes: 8
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