【问题标题】:JSF 2 navigation always from root folderJSF 2 导航总是从根文件夹
【发布时间】:2014-03-04 14:20:40
【问题描述】:

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

--webapp --index.xhtml --文件夹1 --targetPage.xhtml --文件夹2 --otherPage.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 吗? (我不想通过 faces-config 文件使用显式导航)

【问题讨论】:

    标签: jsf-2 navigation


    【解决方案1】:

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

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

    【讨论】:

    • 这正是我正在寻找的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多