【问题标题】:Spring Web Flow Preventing Back Button UseSpring Web Flow 防止后退按钮的使用
【发布时间】:2011-11-13 08:19:33
【问题描述】:

所以我在一个项目中使用 Spring Web Flow,并希望在元素上使用 history="discard" 和 history="invalidate" 属性。

我已将这些属性放置在我想要它们的位置,但是,当我尝试通过在转换上运行历史属性后导航到视图来测试它们是否工作时,它会将我定向到异常页面。

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException:使用键“e1s1”恢复流执行时出现问题

当然,它是说我从历史记录中删除了那个状态,所以它找不到它。我真的不明白为什么首先没有一些内置机制来处理这个问题,但除此之外,我还没有找到一种方法来优雅地处理这个异常,以便我可以重定向它们到错误页面,或者将它们发送回它们来自的地方会更好。

<view-state id="page1">
    <transition on="gotoNextPage" to="page2" history="invalidate" />
</view-state>
<view-state id="page2"/>

应该如何实现这种行为,以便在第 2 页上按下后退按钮不会产生异常,而只会让您停留在第 2 页?

【问题讨论】:

  • 考虑到缺乏视图和响应,显然 Spring Web Flow 是一个非生产就绪的框架,用户群少得可怜。感谢团队负责人在我们签订合同并将自己锁定之前对此进行了调查。
  • 我很同情你的挫败感。我们还决定使用 SWF,因为它可以很好地处理我们的大部分案例。但是还有其他一些看起来很常见的事情,它根本不做。和你一样,我想知道这里的用户群在哪里,论坛得到的回应很少。

标签: exception-handling spring-webflow


【解决方案1】:

我在这方面做了很多搜索。

This old forum post 有 2 个解决方案(附示例代码)。

首先是捕获异常并显示一个使用javascript到forward()返回原始页面的页面-实际上是撤消返回。

第二个解决方案检查流状态并将它们发送到最近的有效流快照。

我和你一样困惑,没有现成的解决方案。每个人都必须遇到这个问题。 有兴趣关注进展的朋友可以联系JIRA issue filed

【讨论】:

  • 不是我最终使用的解决方案,但会接受,因为我的主要是我公司的应用程序专有的。我最终扩展了 FlowExecutionListenerAdapter 并直接处理异常以尝试执行一次执行步骤(如果 ++ 案例因相同的异常而失败,则使用查询参数来防止无限递归),然后将用户发送到登陆/登录页面
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多