spring webflow控制标准MVC @Conroller页面

时间:2014-12-18 21:28:24

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

是否可以将spring webflow流应用于现有的MVC页面(由@Controller支持,而非纯jsp)?

例如我有@RequestMapping(/ start)@RequestMapping(/ buy)@RequestMapping(/ confirm)@RequestMapping(/ pay)我希望将它们放入flow / buy-> / cofirm-> /支付没有自定义导航的可能性 - 我可以使用webflow进行支付吗?

AFAIK是不可能的,但我想确定。

1 个答案:

答案 0 :(得分:0)

Spring webflow和mvc一起工作 - 实际上webflow是建立在mvc之上的。

设置它的机制是另一回事。我仍在了解这一点,但我认为基于跟踪日志会发生这种情况:

在启动时,spring核心处理所有的hte注释和spring配置文件。除其他外,它为webflow注册表和使用@Controller注释的类分配URL映射。

bean org.springframework.webflow.mvc.servlet.FlowHandlerMapping处理webflow url的映射。您必须确保在通过其他方式(xml或@Controller bean)注册的映射之前解释它。

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry" />
    <property name="order" value="-1" />
</bean>

在运行时,URL从servlet引擎传递到mvc映射解析程序。 mvc引擎的这一部分扫描所有已注册的资源,并返回它找到匹配的第一个资源。

给定一个flowregistry bean:

<webflow:flow-registry id="flowRegistry"
    flow-builder-services="flowBuilderServices"
    base-path="/WEB-INF/pages/">
    <webflow:flow-location path="login.xml" />
</webflow:flow-registry>

定义了一个控制器bean:

@Controller
@RequestMapping("/login")
public class LoginController {
...
}

在Web流程中找到的映射优先于控制器中的映射(假设其他所有内容都已正确配置)。

我发现设置webflow项目的约定没有特别详细记录。为了获得一个有效的webflow项目,我最终提取了大约6&#34;准备运行的配置&#34;教程演示。一旦我开始运作,一切都有意义。

配置问题的唯一症状是找不到映射,因此您将在很大程度上依赖于org.springframework.web和org.springframework.webflow的调试日志记录,以找出找不到映射的原因。在我&#34;得到&#34;之前,我最终调试了弹簧代码。它,我仍然在努力解决一些概念。

我希望这会有所帮助。