Spring Webflow 阻止用户在流程完成后返回到流程的开始
Spring Webflow prevent user from going back to the start of the flow after flow completes
Spring Webflow 阻止用户在流程完成后返回到流程的开始并将用户带到结束状态。单击浏览器后退按钮应该将他带到错误页面而不是流程的开始。让我知道是否可以提供任何进一步的信息。
在用户单击后退按钮后重新进入流程时,您需要进行某种类型的条件检查或触发异常,其中任何一种都可以被捕获并处理以重定向到所需页面。
可能的解决方案:
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>
不过,上面的解决方案似乎是 "hack" 如果您只需要对 1 个或几个流使用此行为并且不需要太多实现,我认为这是一个很好的解决方案... (没有扩展 类、覆盖方法等...)
2. 另一种可能的解决方案是在流的输入参数上放置 'require=true' attribute/value。
<input name="id" required="true"/>
因此,如果用户在 url 中单击没有所需参数的后退按钮,流程将触发异常
org.springframework.webflow.engine.FlowInputMappingException:
并且取决于您如何处理网络流中的异常...您可以捕获此异常并重定向到您想要的 page/flow。假设您有 'input' 个标记参数。
3. 通过在 java 中扩展 AbstractFlowHandler 来实现您的流程,这将为您提供巨大的定制能力。显然第三个选项有更多 coding/work。将其用作最后的手段
http://www.springbyexample.org/examples/simple-spring-web-flow-webapp-code-example.html
Spring Webflow 阻止用户在流程完成后返回到流程的开始并将用户带到结束状态。单击浏览器后退按钮应该将他带到错误页面而不是流程的开始。让我知道是否可以提供任何进一步的信息。
在用户单击后退按钮后重新进入流程时,您需要进行某种类型的条件检查或触发异常,其中任何一种都可以被捕获并处理以重定向到所需页面。
可能的解决方案:
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>
不过,上面的解决方案似乎是 "hack" 如果您只需要对 1 个或几个流使用此行为并且不需要太多实现,我认为这是一个很好的解决方案... (没有扩展 类、覆盖方法等...)
2. 另一种可能的解决方案是在流的输入参数上放置 'require=true' attribute/value。
<input name="id" required="true"/>
因此,如果用户在 url 中单击没有所需参数的后退按钮,流程将触发异常
org.springframework.webflow.engine.FlowInputMappingException:
并且取决于您如何处理网络流中的异常...您可以捕获此异常并重定向到您想要的 page/flow。假设您有 'input' 个标记参数。
3. 通过在 java 中扩展 AbstractFlowHandler 来实现您的流程,这将为您提供巨大的定制能力。显然第三个选项有更多 coding/work。将其用作最后的手段
http://www.springbyexample.org/examples/simple-spring-web-flow-webapp-code-example.html