首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails webflow -在同一会话中交换webflow

Grails webflow -在同一会话中交换webflow
EN

Stack Overflow用户
提问于 2013-09-15 21:13:21
回答 1查看 203关注 0票数 0

我有一个Grails应用程序,它有两个webflows:

  1. 一份用于采购
  2. 又一次和我们取得联系

问题:

用户可能会在购买向导中执行多个步骤(通过一个webflow),然后他/她决定他们有一个问题,并尝试与我们联系(也是通过一个webflow)。因此,用户点击我们导航菜单上的“contact-us”链接,但是他们会被带回到他们在购买流程中的最后一步。就我个人而言,我认为这与会话中的“执行”键有关,每个链接都用这个键进行定位。

./联系人_us/索引?执行=e1s1

我想要的解决方案:

我想(在上述情况下),如果用户决定自己从“购买流程”切换到“contact-us流”,那么“购买流程”就会失效/删除,并且用户在“contact-us流”中从零开始。

Grails版本2.2.3 Webflow插件: 2.0.8.1

尝试解决方案

我能想到的最好的解决方案(不做太难看的事情)是创建一个过滤器,当单击链接启动一个新的流并尝试删除另一个流时,这个过滤器可以拦截。但是,在这个示例中,它意外地未能在流存储库(null指针)中找到流。

代码语言:javascript
复制
FlowExecutionLock flowExecutionLock = null;
SessionBindingConversationManager conversationManager = applicationContext.getBean('conversationManager');
DefaultFlowExecutionRepository flowExecutionRepository = applicationContext.getBean("flowExecutionRepository");
try {
    String executionKey = params.get("execution");// executionKey is something like 'e1s1'
    FlowExecutionKey flowExecutionKey = flowExecutionRepository.parseFlowExecutionKey(executionKey);
    flowExecutionLock = flowExecutionRepository.getLock(flowExecutionKey);
    flowExecutionLock.lock();
    FlowExecution execution = flowExecutionRepository.getFlowExecution(flowExecutionKey);
    flowExecutionRepository.removeFlowExecution(execution);
} catch (FlowExecutionRepositoryException e) {
    log.warn("Could not find flow in repository with id ${executionKey} " + e.getMessage());
} catch (NullPointerException e) {
    log.warn("Could not find flow in repository with id ${executionKey} " + e.getMessage());
} finally {
    if (flowExecutionLock != null) {
        flowExecutionLock.unlock();
    }
}

的想法?

有没有人知道我是怎么做到的。会话中的两个流(其中一个是不完整的)之间交换应该是可能的,对吗?我想要一个干净的解决方案,而不是调整自己的流量。

EN

回答 1

Stack Overflow用户

发布于 2013-09-16 19:28:22

我似乎找到了一个解决办法,在g:link标记中(我在这里创建到流的链接),我并不总是习惯于添加操作"index“,就像在Grails中一样,默认情况下它会出现在那里,但是当我添加它时,我似乎能够无缝地在流之间交换。

代码语言:javascript
复制
<g:link absolute="true" controller="contact_us" action="index">

我不确定是否将旧流从流存储库中删除。我试着在这两个流之间点击了70-80次,但是日志中似乎没有任何东西出现。如果我有任何问题,我会回来更新答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18817553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档