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?
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.