Spring Web Flow Preventing Back Button Use

此生再无相见时 提交于 2019-12-06 04:43:22

问题


So I'm using Spring Web Flow on a project and want to make use of the history="discard" and history="invalidate" attributes on elements.

I have placed those attributes where I want them, however, when I try to test whether or not they work by navigating to a view after the history attribute is run on the transition, it directs me to an exception page.

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'

So sure, it's saying I deleted that state from the history so it can't find it. I don't really see why there isn't some built in mechanism to handle this in the first place, but that aside, I haven't been able to figure out a way to gracefully handle this exception so that I can just redirect them to an error page or would be nicer to just send them back to where they came from.

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

How is this behavior supposed to be achieved, so that pressing the back button on page2 does not create an exception but just leaves you at page 2?


回答1:


I did a lot of searching on this.

This old forum post has 2 solutions (with sample code).

The first is to catch the exception and display a page that use javascript to forward() back to the original page - in effect undoing the back.

The 2nd solution examines the flow state and sends them to most recent valid flow snapshot.

I'm as perplexed as you are that there is no out of box solution. Everyone must encounter this issue. There is a JIRA issue filed for those interested in following the progress.



来源:https://stackoverflow.com/questions/7354503/spring-web-flow-preventing-back-button-use

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!