异常处理 – Spring Web Flow防止后退按钮使用

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

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

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException: A problem occurred restoring the flow execution with key ‘e1s1’

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

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

如何实现这种行为,以便按下第2页上的后退按钮不会产生异常但只留下第2页?

最佳答案 我做了很多搜索.

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

第一个是捕获异常并显示一个使用javascript转发()回到原始页面的页面 – 实际上是撤消后面的.

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

我很困惑,因为没有开箱即用的解决方案.每个人都必须遇到这个问题.
有兴趣跟进进度的人有JIRA issue filed.

点赞