使Spring Webflow中的上一页快照无效



我正在使用Spring Webflow,我正在从view-state重定向到action-stateview-state。现在,当用户处于第二view-state时,我不希望用户能够单击浏览器后退按钮并转到上一页。

我发现,history="invalidate"可用于使上一页的快照无效。我尝试在transition中使用它.但是,它不起作用(浏览器后退按钮未禁用(。

那么,我可以向我的 webflow 状态添加什么以禁用后退按钮并仅允许用户使用页面内提供的导航控件?

谢谢

您将history属性添加到哪个州?

首先,<action-state>不支持它(https://jira.spring.io/browse/SWF-1481(。

你必须把它添加到第一个<view-state>的过渡中。如果你只想有条件地对<action-state>发生的事情这样做,那就不够了。我们最终创建了 Java 代码,以便从我们的<action-state>方法调用来执行此操作。

/**
* Invalidate WebFlow history. For use in action-state, where the transition element is not able
* to specify to invalidate history.
*/
public static void invalidateHistory() {
RequestContext context = RequestContextHolder.getRequestContext();
synchronized(context.getFlowExecutionContext()) {
DefaultFlowExecutionRepository r =
(DefaultFlowExecutionRepository)
((FlowExecutorImpl)
context.getActiveFlow().
getApplicationContext().
getBean(FlowExecutor.class)).getExecutionRepository();
r.removeAllFlowExecutionSnapshots((FlowExecution)context.getFlowExecutionContext());
}
}

(另请注意,"invalidate"会使状态及其之前的所有状态无效。如果您只想阻止该单一状态,则可以改用"丢弃"。https://docs.spring.io/spring-webflow/docs/current/reference/html/views.html#view-backtracking(

最新更新