JSF 2 导航始终从根文件夹进行



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

-

-网络应用 --索引.xhtml --文件夹1 --目标页面.xhtml --文件夹2 --其他页面.xhtml

我有一个名为TargetPageBean的托管Bean,具有以下方法:

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

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

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

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

您可以将重定向与完整请求路径一起使用:

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();
}

相关内容

  • 没有找到相关文章

最新更新