【问题标题】:Can I get the current webflow state within a Spring MVC controller?我可以在 Spring MVC 控制器中获取当前的 webflow 状态吗?
【发布时间】:2012-08-19 05:28:20
【问题描述】:

表面上,有点奇怪的问题!但我正在创建一个同时使用 webflow 和传统 Spring MVC 控制器的 Web 应用程序。

从其中一个 webflow 视图中,客户端向 spring 控制器发出一个 http 请求 (ajax)。当它最初被编码时,它与 webflow 没有太多的逻辑连接,但现在事情已经发生了变化,控制器真的可以知道请求来自哪个屏幕(视图状态)。

我的控制器方法签名如下所示:

@RequestMapping(value="/AjaxStuff", method=RequestMethod.POST)
public String ajaxStuff(@ModelAttribute("quote") QB2MotorQuote p_quote, BindingResult p_bindingResult, 
        HttpServletRequest p_req, Model p_model, DefaultMessageContext p_messages) {

我从我的一些 webflow 操作类中知道,我可以从 RequestContext 对象中获取当前状态:

public Event checkDeclines(RequestContext p_ctx) throws Exception {
    // get the current state
    StateDefinition state = p_ctx.getCurrentState();

我从来没有真正理解过 Spring 所做的“巫毒”:)它可以通过在方法签名上指定参数来自动注入参数(当然它只能注入它知道的东西??)。我尝试简单地更改控制器方法的方法签名以注入 RequestContext(徒劳地希望它会被注入),但事实并非如此。它抱怨 RequestContext 是一个接口。

那么,有谁知道我如何让我的控制器知道当前的 webflow 状态 - 要么通过向控制器方法签名中注入一些东西,要么我可以以某种方式从 http 请求(或会话,我可以得到它来自请求)。

非常感谢任何帮助。

【问题讨论】:

    标签: java spring spring-mvc spring-webflow-2


    【解决方案1】:

    在您的 webflow 视图中,您应该可以访问可以在 ajax 调用中使用的变量 ${flowRequestContext}

    您可以从中获取您想要的信息${flowRequestContext.currentState}并将其添加为参数。

    您不能直接注入 requestContext,因为您不在 webflow 环境中。如果你是,你可以直接使用RequestContext.getRequestContext()。尝试从您的 MVC 控制器调用它,您将得到空值。从流程中尝试,您会得到它。

    【讨论】:

    • 感谢您的回复,很抱歉花了这么长时间才接受您的回答!现在我对 webflow 和 mvc 的工作原理有了更多了解,我明白你在说什么。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 2011-04-15
    • 2014-10-22
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多