编程语言
首页 > 编程语言> > java – 我可以在Spring MVC控制器中获取当前的webflow状态吗?

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

作者:互联网

从表面上看,有点奇怪的问题!但我正在创建一个使用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) {

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

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

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

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

任何帮助都非常感谢.

解决方法:

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

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

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

标签:java,spring-mvc,spring,spring-webflow-2
来源: https://codeday.me/bug/20190529/1181930.html