0

如果我有以下导航规则:

<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) MainForm 中的方法返回结果 1 渲染视图 1 步骤 2) 视图 1 中的方法返回结果 2 渲染视图 2 步骤 3) 视图 2 中的方法返回结果 3 渲染视图 3

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

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

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

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

4

1 回答 1

0

查看规范,我们必须得出结论,每个标签只能有一个<from-view-id>标签<navigation-rule>

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

Being this tag optional, you can specify it or not -note that you can also specify a wildcard view id, so the navigation case covers every view id's that are related with the pattern- but you only can have one for each rule. So for your case you have the following options:

  • Create a new navigation rule to manage navigation cases starting from view1.
  • Cover your view id's with a pattern and use a wildcard to group them (naming your first page view0):

    <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>
    

  • Just don't assign from-view-id and let it work for every view-id you're actually in. You won't have problems while you use different outcomes for each case.
于 2013-02-22T18:41:16.497 回答