【发布时间】:2012-07-02 23:35:46
【问题描述】:
我正在将 Spring Web Flow 2 添加到当前不使用 Spring MVC 或 Web Flow 的非常大的现有 Web 应用程序中。我的任务是通过访问 mySite.com/flows 来触发 Web Flow,但我遇到了困难。我的方法是使用/flows/* 的映射设置DispatcherServlet,并将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 访问流程。好的,但我不想在 URL 中出现 /booking,所以我将 booking-flow.xml 从 booking 文件夹中移出,并直接进入 WEB-INF/app/flows 并希望这对我有用,但它没有 - 我根本不认为流映射。
有谁知道我如何将流映射到 DispatcherServlet 映射的根,或者有更好的方法来解决这个问题吗?我不希望 DispatcherServlet 在我的应用程序中处理/flows 之外的任何请求。是只有我一个人,还是 Spring Web Flow 上可用的文档很少?
谢谢!
【问题讨论】:
-
不改变目录结构的最佳选择是从
base-path中删除flows。请参阅下面的答案。
标签: spring spring-mvc mapping spring-webflow-2