我可以在Spring MVC控制器中获取当前的Webflow状态吗?

Nat*_*ell 4 java spring spring-mvc spring-webflow-2

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

从其中一个Webflow视图中,http请求(ajax)从客户端发送到spring控制器.当它最初被编码时,它与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) {
Run Code Online (Sandbox Code Playgroud)

我从一些webflow动作类中了解到,我可以从RequestContext对象获取当前状态:

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

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

所以,有没有人知道如何让我的控制器知道当前的webflow状态 - 通过注入控制器方法签名中的东西,或者我可以从某种方式从http请求中获取它(或者我可以从请求获得的会话) ).

任何帮助都非常感谢.

rpt*_*t57 6

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

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

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