5

表面上,有点奇怪的问题!但我正在创建一个同时使用 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 请求(或会话,我可以从请求中获取)获取它)。

非常感谢您对此的任何帮助。

4

1 回答 1

7

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

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

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

于 2012-09-07T12:37:05.900 回答