JSF 2导航总是从根文件夹

时间:2014-03-04 14:20:40

标签: jsf-2 navigation

我有一个带有以下xhtml结构的JSF 2应用程序:

- web应用   --index.xhtml   --folder1     --targetPage.xhtml   --folder2     --otherPage.xhtml

我有一个名为TargetPageBean的托管bean,其方法如下:

public String navigateToTargetPage() {

    if( isOnIndexPage() ) {
        return "folder1/targetPage.xhtml?faces-redirect=true";
    } else {
        return "targetPage.xhtml?faces-redirect=true";
    }
}

在这两种情况下,这样可以正常工作:

  • 我只是从索引页面导航到目标页面
  • 我已经在目标页面上,我再次导航到此页面

但是这种方法非常糟糕,因为我的树形结构可能更深,我可能想要从几乎所有地方移动到目标页面。我是否可以告诉JSF它应该始终从“root”重定向,以便我只需要返回folder1/targetPage.xhtml?faces-redirect=true? (我不想通过faces-config文件使用显式导航)

1 个答案:

答案 0 :(得分:2)

您可以使用带有完整请求路径的重定向:

getFacesContext().getExternalContext().redirect(getRequest().getContextPath() +
    "/page.jsf?" + Constants.CONSTANT_NAME + "=" + bean.getSomeValue());

,其中

protected HttpServletRequest getRequest() {
    return (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
}
protected FacesContext getFacesContext() {
    return FacesContext.getCurrentInstance();
}