如何以编程方式进行JSF内部页面转发?

问题描述 投票:0回答:3

在某些情况下(例如每当发生异常时),如何在托管 bean 中以编程方式执行 JSF 内部页面转发?我不想在转发到其他页面时更改 URL。

现在我使用它以编程方式重定向到另一个页面,但这会更改 URL。

FacesContext.getCurrentInstance().getExternalContext().redirect();
jsf jsf-2 forward
3个回答
8
投票

试试这个:

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

1
投票

您可以使用

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

或者你可以使用

   FacesContext.getCurrentInstance().responseComplete();  

希望这有帮助。


0
投票

这是另一种方式:

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

FacesContext fc = FacesContext.getCurrentInstance();
NavigationHandler nav = fc.getApplication().getNavigationHandler();
nav.handleNavigation(fc, null, jsfPath);
© www.soinside.com 2019 - 2024. All rights reserved.