我正在使用Spring Webflow,我正在从view-state
重定向到action-state
到view-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(