所以我在一个项目中使用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页?
答案 0 :(得分:2)
我做了很多搜索。
This old forum post有2个解决方案(带示例代码)。
第一个是捕获异常并显示一个使用javascript到forward()
的页面回到原始页面 - 实际上是撤消后面的。
第二个解决方案检查流状态并将它们发送到最新的有效流快照。
我很困惑,因为没有开箱即用的解决方案。每个人都必须遇到这个问题。 有兴趣跟进进度的人有JIRA issue filed。