Navigation JSF 1.2中的查询重新分级导航规则

Navigation JSF 1.2中的查询重新分级导航规则,navigation,jsf-1.2,Navigation,Jsf 1.2,如果我有以下导航规则: <navigation-rule> <from-view-id>Mainview</from-view-id> <navigation-case> <from-outcome>outcome1</from-outcome> <to-view-id>view1</to-view-id> </navigation-c

如果我有以下导航规则:

<navigation-rule>
    <from-view-id>Mainview</from-view-id>
    <navigation-case>
        <from-outcome>outcome1</from-outcome>
        <to-view-id>view1</to-view-id>  
    </navigation-case>
    <navigation-case>
        <from-outcome>outcome2</from-outcome>
        <to-view-id>view2</to-view-id>  
        <redirect/>         
    </navigation-case>
    <navigation-case>
        <from-outcome>outcome3</from-outcome>
        <to-view-id>view3</to-view-id>  
        <redirect/>         
    </navigation-case>
</navigation-rule>

主视图
结果1
视图1
结果2
视图2
结果3
视图3
如果整个流程没有任何验证错误,那么一切都会正常工作。即:

步骤1)来自MainForm的方法返回结果1渲染视图1 步骤2)view1中的方法返回结果2渲染view2 步骤3)view2中的方法返回结果3渲染view3

请注意,上述规则中并没有重定向,这意味着浏览器将在浏览器窗口中显示Mainview

如果在上面的步骤2中,验证失败,则浏览器将在地址栏中显示view1,而不是显示view2

现在,对于下一个流(一旦验证成功),起点不是Mainview,而是view1,这意味着必须编写导航案例 带视图1

如何处理呢?我们是否需要编写另一套导航规则?或者像上面这样设计导航规则是完全错误的

查看,我们必须得出结论,每个
中只能有一个
标记

来自视图id:一个可选元素,包含完整的页面标识符(与页面上下文相关的相对路径)或以星号(*)通配符结尾的页面标识符前缀。如果使用通配符,则该规则适用于与通配符模式匹配的所有页面。要使全局规则适用于所有页面,请将此元素留空

由于此标记是可选的,您可以指定它或不指定它-注意,您还可以指定通配符视图id,因此导航案例涵盖与模式相关的每个视图id-但每个规则只能有一个。 因此,对于您的案例,您有以下选择:

  • 创建新的导航规则以管理从
    view1
    开始的导航案例
  • 使用模式覆盖视图id,并使用通配符将其分组(命名第一页视图0):

    
    看法*
    结果1
    视图1
    结果2
    视图2
    结果3
    视图3
    

  • 只是不要从视图id分配
    ,而是让它对您实际所在的每个
    视图id
    都有效。当你对每个案例使用不同的结果时,你不会有问题

感谢您的详细回答。我们花了这么长时间才接受asnwer的原因是,我们最终使用了导致此问题收回它的方法,但上述方法确实解决了问题。
<navigation-rule>
     <from-view-id>view*</from-view-id>
     <navigation-case>
     <from-outcome>outcome1</from-outcome>
     <to-view-id>view1</to-view-id>  
</navigation-case>
<navigation-case>
    <from-outcome>outcome2</from-outcome>
    <to-view-id>view2</to-view-id>  
    <redirect/>         
</navigation-case>
<navigation-case>
    <from-outcome>outcome3</from-outcome>
    <to-view-id>view3</to-view-id>  
    <redirect/>         
</navigation-case>