我將Spring Web Flow 2添加到當前未使用Spring MVC或Web Flow的非常大的現有Web應用程序中。我的任務是通過訪問mySite.com/flows觸發Web Flow,並且遇到困難。我的方法是設置DispatcherServlet,映射爲/flows/*
,將Web Flow映射到/flows
。這裏是我的web.xml在DispatcherServlet的配置:Spring Web Flow請求映射
<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
(/WEB-INF/app/flows/booking
)的子文件夾內添加我的流程booking-flow.xml
。而且,太棒了! - 它按預期工作。我能夠從mySite.com/flows/booking訪問流程。好的,但我不想在網址中使用/booking
,所以我將booking-flow.xml
從booking
文件夾中移出,並直接輸入WEB-INF/app/flows
,並且希望能爲我工作,但它不會 - 我不認爲流映射在所有。
有誰知道我可以如何將流映射到DispatcherServlet映射的根,還是有更好的方法來處理這個問題?我不希望DispatcherServlet在我的應用程序中處理/flows
以外的任何請求。僅僅是我,還是Spring Web Flow上的文檔很少?
謝謝!
沒有對dir結構進行任何更改的最佳選項是從'base- path'。見下面的答案。 –