我正在将 Spring Web Flow 2 添加到当前不使用 Spring MVC 或 Web Flow 的非常大的现有 Web 应用程序中。我的任务是通过访问 mySite.com/flows 来触发 Web Flow,但我遇到了困难。我的方法是设置 DispatcherServlet,/flows/*
并将 Web Flow 映射到/flows
. 这是配置 DispatcherServlet 的 web.xml:
<servlet>
<servlet-name>flow</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/flowContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flow</servlet-name>
<url-pattern>/flows/*</url-pattern>
</servlet-mapping>
我已经尝试了几种方法来让 Web Flow 映射到/flows
. 我的第一次尝试是使用带有base-path
设置的流注册表:
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF/app/flows">
<webflow:flow-location-pattern value="**/*-flow.xml" />
</webflow:flow-registry>
我的理解是,这将采用内部的文件夹结构/WEB-INF/app/flows
来创建请求映射。booking-flow.xml
我的第一个测试是在名为booking
( /WEB-INF/app/flows/booking
)的子文件夹中添加我的流程。而且,太好了!- 它按预期工作。我能够从 mySite.com/flows/booking 访问流程。好的,但我不想/booking
在 URL 中,所以我将它booking-flow.xml
移出booking
文件夹,直接进入WEB-INF/app/flows
并期望它对我有用,但它没有 - 我认为流程根本没有映射。
有谁知道我如何将流映射到 DispatcherServlet 映射的根,或者有更好的方法来解决这个问题吗?我不希望 DispatcherServlet 处理/flows
我的应用程序之外的任何请求。只是我,还是 Spring Web Flow 上可用的文档很少?
谢谢!