Spring Webflow阻止用户在流程完成并且用户进入结束状态后返回流程的开头。单击浏览器后退按钮应该将他带到错误页面而不是流程的开头。如果我能提供任何进一步的信息,请告诉我。
答案 0 :(得分:3)
在用户单击后退按钮后重新输入流时,您需要某种类型的条件检查或触发异常,其中可以捕获并处理其中任何一个以重定向到所需页面。
可能的解决方案:
1。向用户会话添加一个变量,指示用户无法再输入特定流,并在流程开始时检查此变量。
<decision-state id="checkBackButtonClick">
<if test="externalContext.sessionMap.preventBackButtonClick" then="redirectToHomePage" else="continueToEditState"/>
</decision-state>
....
<end-state id="end" view="externalRedirect:/pojos/#{somePojo.id}">
<on-entry>
<set name="externalContext.sessionMap.preventBackButtonClick" value="true" type="java.lang.Boolean"/>
</on-entry>
</end-state>
虽然,上面的解决方案似乎是一个&#34; hack&#34;我认为这是一个很好的解决方案,如果你只需要一个或几个流的这种行为,它不需要太多的实现...(没有扩展类,重写方法等...)
2. 另一种可能的解决方案是放置一个&#39; require = true&#39;流的输入参数的属性/值。
<input name="id" required="true"/>
因此,如果用户单击后退按钮而没有url中的必需参数,则流程将触发异常
org.springframework.webflow.engine.FlowInputMappingException:
根据您在Webflow中处理异常的方式...您可以捕获此异常并重定向到您想要的页面/流程。假设你有输入&#39; tag params。
3. 通过在java中扩展AbstractFlowHandler来实现您的流程,这将为您提供大量的自定义功能。显然第三个选项带有更多的编码/工作。将它作为最后的手段使用
http://www.springbyexample.org/examples/simple-spring-web-flow-webapp-code-example.html