Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF2导航始终来自根文件夹_Jsf 2_Navigation - Fatal编程技术网

Jsf 2 JSF2导航始终来自根文件夹

Jsf 2 JSF2导航始终来自根文件夹,jsf-2,navigation,Jsf 2,Navigation,我有一个具有以下xhtml结构的JSF 2应用程序: --网络应用 --index.xhtml --折叠1 --targetPage.xhtml --折叠2 --otherPage.xhtml 我有一个名为TargetPageBean的托管bean,其方法如下: public String navigateToTargetPage() { if( isOnIndexPage() ) { return "folder1/targetPage.xhtml?faces-red

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

--网络应用 --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配置文件使用显式导航)

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

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