【问题标题】:Spring WebFlow - cancel requestSpring WebFlow - 取消请求
【发布时间】:2013-05-13 15:54:13
【问题描述】:

场景是这样的:

a 有一些视图状态。 当我的 conversationScope 中的一个对象处于某种状态(例如不为空)时,我想防止用户返回。 返回我的意思是:以太按下浏览器后退按钮或操作执行参数。

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

我试图实现FlowExecutionListenerAdapter,但这只能访问requestContextviewviewState

所以问题是: 最好的方法是什么以及如何做到这一点? 处理程序、侦听器或拦截器。

【问题讨论】:

    标签: spring spring-webflow


    【解决方案1】:

    好吧,我解决了它很脏,但我解决了它:

    我编写了一个FlowExecutionListenerAdapter 实现,如果条件匹配,它将在resuming 阶段抛出一个Exception

    @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"/>
    

    我从这个网站得到了这个解决方案的想法:SpringForum - Thread: FlowExecutionListener - how to intercept and redirect user

    【讨论】:

      【解决方案2】:

      在你的转换上设置history="discard"怎么样?

      【讨论】:

      • 我在发帖之前尝试过。丢弃只是删除最后一个快照,无效删除执行的所有快照。所以回去会抛出异常
      • 您确实说过“预防”,这些方法确实如此。我理解您为什么更喜欢您的解决方案,但是鉴于问题中发布的内容,我认为对这个答案投反对票是不公平的(无论是谁做的)。 (注意,这不是我的答案。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      相关资源
      最近更新 更多