Самый простой способ смешать как веб-потоки, так и обычные Spring MVC-контроллеры - это просто зарегистрировать простые контроллеры по URL-путям вне любого из ваших потоковых путей.
Например, вот некоторые выдержки из наших файлов конфигурации, загруженные из web.xml
единственным экземпляром DispatchServlet
:
<!-- Simple URL-view mapping without controller (or flow) -->
<mvc:view-controller path="/selectLanguage" view-name="selectLanguage"/>
<!-- Maps request paths to flows in the flowRegistry;
e.g. a path of /hotels/booking looks for a flow with id "hotels/booking". -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping" p:order="-1">
<property name="flowRegistry" ref="flowRegistry" />
<property name="interceptors">
<list>
<!-- for each flow, if a param lang=xx is added, switch locales -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang"/>
</list>
</property>
</bean>
<!-- The registry of executable flow definitions -->
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF">
<!-- Flows created from all -flow.xml files, with the flow ID being the path name -->
<webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>
Таким образом, WebFlow зарегистрирует все URL-пути, соответствующие файлу WEB-INF / ** / something-flow.xml, а все другие URL-пути, например /selectLanguage above
, могут обрабатываться обычным контроллером.