【问题标题】:Query regrading navigation rule in JSF 1.2JSF 1.2 中的查询重分级导航规则
【发布时间】:2013-02-09 12:21:30
【问题描述】:

如果我有以下导航规则:

<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) 来自 view1 的方法返回结果 2 渲染 view2 步骤 3) view2 中的方法返回结果 3 渲染 view3

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

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

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

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

【问题讨论】:

    标签: navigation jsf-1.2


    【解决方案1】:

    查看specification,我们必须得出结论,每个&lt;navigation-rule&gt; 中只能有一个&lt;from-view-id&gt; 标签。

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

    这个标签是可选的,你可以指定或不指定——注意你也可以指定一个通配符视图id,所以导航案例涵盖了与模式相关的每个视图id——但你只能为每个规则设置一个. 因此,对于您的情况,您有以下选择:

    • 创建一个新的导航规则来管理从view1开始的导航案例。
    • 用模式覆盖您的视图 ID,并使用通配符将它们分组(命名您的第一页 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>
      

    • 只是不要分配from-view-id,让它适用于您实际所在的每个view-id。当您为每种情况使用不同的结果时,您不会遇到问题。

    【讨论】:

    • 感谢您的详细回答。之所以花了这么长时间才接受作为回答是因为,我们终于使用 导致这个问题收回了它,但上面的方法确实解决了问题有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多