SpringWebFlow-取消请求

SpringWebFlow-取消请求,spring,spring-webflow,Spring,Spring Webflow,情况是这样的: a有一些视图状态。 当我的conversationScope中的某个对象处于特定状态(例如,NOTNULL)时,我希望防止用户返回。 返回的意思是:按下浏览器返回按钮或操纵执行参数 “防止”的一种方法是忽略请求 我已尝试实现一个FlowExecutionListenerAdapter,但它只能访问requestContext、视图和视图状态 因此,问题是: 实现这一目标的最佳方式是什么? 处理程序、侦听器或拦截器。在传输中设置history=“discard”怎么样?好的,我解决

情况是这样的:

a有一些视图状态。 当我的conversationScope中的某个对象处于特定状态(例如,NOTNULL)时,我希望防止用户返回。 返回的意思是:按下浏览器返回按钮或操纵执行参数

“防止”的一种方法是忽略请求

我已尝试实现一个
FlowExecutionListenerAdapter
,但它只能访问
requestContext
视图和
视图状态

因此,问题是: 实现这一目标的最佳方式是什么?
处理程序、侦听器或拦截器。

在传输中设置
history=“discard”
怎么样?

好的,我解决得很糟糕,但我解决了:

我编写了一个
FlowExecutionListenerAdapter
实现,如果标准匹配,它会在
恢复
阶段抛出一个
异常

@Override
public void resuming(RequestContext context)
{
    if (!backwardNavigation)
    {
        if (!context.getFlowExecutionContext().getActiveSession().getState().getId()
                .equals(attributeConfigurer.getFinishViewState()))
        {
            throw new ConfirmationFinishRedirectException();
        }

    }
}
我在抛出异常的状态下捕捉到异常的转换

<transition on-exception="example.ConfirmationFinishRedirectException" to="finishState" bind="false" validate="false" history="discard"/>


我从这个网站上得到了这个解决方案的想法:

我在发帖之前就试过了。discard只删除最后一个快照,invalidate删除执行的所有快照。因此,回过头来看,会有一个例外,你确实说过“预防”,这些方法就是这样做的。我理解你为什么喜欢你的解决方案,但考虑到问题中的内容,我认为否决这个答案是不公平的(不管是谁做的)。(注意,这不是我的答案。)