zoukankan      html  css  js  c++  java
  • TASK FLOW中的REENTRY

    在实际应用中,用户可能会点击浏览器的回退按钮回到上一页面,在有些情况下会导致一些问题。

    ADF Bounded TaskFlow有一个选项(UnBounded TaskFlow无此选项)可以设置是否允许用户使用浏览器的回退按钮回到上一页面,这个属性就是Reentry。

    1. 按照开发手册中的说明,Reentry可以设置为:

    (1)reentry-allowed:允许该bounded task flow中的所有页面使用浏览器的回退按钮重新进入上一页面,默认选项。

    (2)reentry-not-allowed:不允许该bounded task flow中的所有页面使用浏览器的回退按钮重新进入上一页面。

    这里的不允许不是禁止用户点击浏览器的回退按钮,这个是没办法禁止的。

    它的不允许是这样体现的:当用户点击浏览器的回退按钮后,可以重新进入上一页面,但如果你在该页面做任何事情,例如点击按钮,将会抛出异常:InvalidTaskFlowReentry。

    (3)reentry-outcome-dependent:条件允许使用浏览器的回退按钮重新进入上一页面。

    取决于上一次从该bounded task flow返回的outcome,取决于Return Activity上的Reentry属性设置。

    适合的典型场景:购物网站如果用户取消了某次采购,那么允许回退;如果订单已经提交,则不允许回退。

    reentry-not-allowed的行为和我们想象的不一样,是不是?事后警告用户抛异常,这个界面效果肯定不太友好。

    这时,我们应该创建一个exception handler来处理这个异常,提示用户页面过期,需要重新登录之类的警告,并在几秒钟之后自动跳转到登录页面。

    2. 几个需要明确的问题:

    (1)重新进入Task Flow后,Task Flow上的输入参数将使用当前值(如果有新的赋值的话),而不是初始值。

    (2)重新进入Task Flow后,Manage Bean中的值也跟着回退到之前的值,所有在用户回退之后的修改将丢失。

    可以通过设置View Activity上的redirect属性来改变这一行为。这个有待试验考证。

    参考文献:

    1. https://blogs.oracle.com/raghuyadav/entry/adf_taskflow_reentry-not-allow

    程序员的基础教程:菜鸟程序员

  • 相关阅读:
    流程控制
    小结
    运算符
    进制之间的转换
    自动类型转换和强制类型转换
    变量
    关键字,标识符,
    NGINX 做TCP转发(端口转发)并记录日志
    redash安装
    解决 es CircuitBreakingException 问题(Data too large Error)
  • 原文地址:https://www.cnblogs.com/guohu/p/4029881.html
Copyright © 2011-2022 走看看