在实际应用中,用户可能会点击浏览器的回退按钮回到上一页面,在有些情况下会导致一些问题。
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
程序员的基础教程:菜鸟程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现