在某些情况下(例如每当发生异常时),如何在托管 bean 中以编程方式执行 JSF 内部页面转发?我不想在转发到其他页面时更改 URL。
现在我使用它以编程方式重定向到另一个页面,但这会更改 URL。
FacesContext.getCurrentInstance().getExternalContext().redirect();
试试这个:
public void forward(){
String uri = "destination.xhtml";
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);
}
您可以使用
FacesContext.getCurrentInstance().getViewRoot().setViewId("your target view id");
FacesContext.getCurrentInstance().renderResponse();
或者你可以使用
FacesContext.getCurrentInstance().responseComplete();
希望这有帮助。
这是另一种方式:
String jsfPath = "/home/HomePage.xhtml";
FacesContext fc = FacesContext.getCurrentInstance();
NavigationHandler nav = fc.getApplication().getNavigationHandler();
nav.handleNavigation(fc, null, jsfPath);