JSF重定向到其他页面

JSF重定向到其他页面,jsf,redirect,submit,Jsf,Redirect,Submit,我有三个XHTML页面 index.xhtml 第1.xhtml页 第2.xhtml页 在index.xhtml页面中,我有一个commandButton,它将用户发送到page\u 1.xhtml。所有这些都是在faces config.xml中的导航规则中完成的 假设两个commandButton操作都链接到支持Java类,如何使用另一个commandButton将用户从index.xhtml重定向到page_2.xhtml。在动作方法中,返回按钮对应的结果 <

我有三个XHTML页面

  • index.xhtml
  • 第1.xhtml页
  • 第2.xhtml页
  • index.xhtml
    页面中,我有一个
    commandButton
    ,它将用户发送到
    page\u 1.xhtml
    。所有这些都是在
    faces config.xml
    中的导航规则中完成的


    假设两个
    commandButton
    操作都链接到支持Java类,如何使用另一个
    commandButton
    将用户从
    index.xhtml
    重定向到
    page_2.xhtml
    。在动作方法中,返回按钮对应的结果

                <navigation-rule>
                    <from-view-id>index.html</from-view-id>
                    <navigation-case>
                        <from-outcome>page1</from-outcome>
                        <to-view-id>page_1.xhtml</to-view-id>
                    </navigation-case>
                    <navigation-case>
                        <from-outcome>page2</from-outcome>
                        <to-view-id>page_2.xhtml</to-view-id>
                    </navigation-case>
                </navigation-rule>
    
    
    index.html
    第1页
    第1.xhtml页
    第2页
    第2.xhtml页
    
    添加两个导航案例,如下所示。在动作方法中,返回按钮对应的结果

                <navigation-rule>
                    <from-view-id>index.html</from-view-id>
                    <navigation-case>
                        <from-outcome>page1</from-outcome>
                        <to-view-id>page_1.xhtml</to-view-id>
                    </navigation-case>
                    <navigation-case>
                        <from-outcome>page2</from-outcome>
                        <to-view-id>page_2.xhtml</to-view-id>
                    </navigation-case>
                </navigation-rule>
    
    
    index.html
    第1页
    第1.xhtml页
    第2页
    第2.xhtml页
    
    只需将按钮绑定到不同的操作方法,每个操作方法都会返回不同的结果

    
    

    导航案例是不必要的。JSF2.0支持隐式导航。导航结果只能是所需目标视图的路径/文件名。结果中的文件扩展名是可选的

    如果您不一定需要在导航上执行任何业务操作,或者您可以在目标页面的支持bean的(post)构造函数中执行,那么您也可以直接将结果值放入
    操作中

    
    
    然而,
    将不执行重定向,而是执行转发。最终用户在浏览器地址栏中看不到正在更改的URL。目标页不可设置为书签。如果可以,我建议使用

    
    
    或者,如果确实需要调用业务操作,但希望执行真正的重定向,则将
    faces redirect=true
    作为查询字符串附加到结果值

    public String goToPage1() {
        // ...
        return "page_1?faces-redirect=true";
    }
    
    public String goToPage2() {
        // ...
        return "page_2?faces-redirect=true";
    }
    
    另见:

    只需将按钮绑定到不同的操作方法,每个操作方法都会返回不同的结果

    
    

    导航案例是不必要的。JSF2.0支持隐式导航。导航结果只能是所需目标视图的路径/文件名。结果中的文件扩展名是可选的

    如果您不一定需要在导航上执行任何业务操作,或者您可以在目标页面的支持bean的(post)构造函数中执行,那么您也可以直接将结果值放入
    操作中

    
    
    然而,
    将不执行重定向,而是执行转发。最终用户在浏览器地址栏中看不到正在更改的URL。目标页不可设置为书签。如果可以,我建议使用

    
    
    或者,如果确实需要调用业务操作,但希望执行真正的重定向,则将
    faces redirect=true
    作为查询字符串附加到结果值

    public String goToPage1() {
        // ...
        return "page_1?faces-redirect=true";
    }
    
    public String goToPage2() {
        // ...
        return "page_2?faces-redirect=true";
    }
    
    另见:

    您也可以这样做,在代码的任何部分重定向到“example.xhtml”


    您也可以这样做,在代码的任何部分重定向到“example.xhtml”


    为什么不复制和更改导航规则和命令按钮?@Daniel它不是这样工作的,你是使用JSF1.x还是2.x?您真的需要在页到页导航上调用托管bean操作方法吗?@BalusC-its JSF 2.0。。是的,我想是的,因为我必须在每个页面上显示不同的值。为什么要使用导航规则?你确定你没有过多地关注JSF1.x教程吗?还有,这些请求真的必须是POST请求而不是GET请求吗?为什么不复制并更改导航规则和命令按钮?@Daniel它不是这样工作的,你是在使用JSF 1.x还是2.x?您真的需要在页到页导航上调用托管bean操作方法吗?@BalusC-its JSF 2.0。。是的,我想是的,因为我必须在每个页面上显示不同的值。为什么要使用导航规则?你确定你没有过多地关注JSF1.x教程吗?此外,这些请求真的必须是POST请求而不是GET请求吗?在此场景中,您如何添加re direct?我也有同样的问题,将
    ?faces redirect=true
    添加到支持bean的
    返回“some_view?faces redirect=true”它给了我缺少的导航规则消息。@AjaySharma在
    块中,您可以添加自动关闭标记
    如何在此场景中添加re direct我有相同的问题
    ?faces redirect=true
    被添加到支持bean的
    返回“某些视图?faces redirect=true”它提供了缺少的导航规则消息。@AjaySharma在
    块中,您可以添加自动关闭标记