Spring MVC - Web Flow Controller - PullRequest
       19

Spring MVC - Web Flow Controller

5 голосов
/ 21 января 2010

У меня есть приложение j2ee, разработанное с использованием Spring Framework и Spring Webflow.В настоящее время все мои URL-запросы проходят через веб-поток.То, что я хочу, - это возможность выбрать, следует ли направлять его в Web Flow или на обычный пружинный контроллер MVC.Я понятия не имею, как направить его на пользовательские контроллеры.Как мне это сделать?

Я пытался получить это в своем файле web.xml, но не могу направить его на контроллер компонентов, указанный в mytest2-servlet.xml

<servlet>
    <servlet-name>mytest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet>
    <servlet-name>mytest2</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation2</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>mytest</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mytest2</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/web-application-config.xml
</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation2</param-name>
    <param-value>
        /WEB-INF/mytest2-servlet.xml
</param-value>
</context-param>

Ответы [ 3 ]

1 голос
/ 26 июня 2012

Самый простой способ смешать как веб-потоки, так и обычные 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, могут обрабатываться обычным контроллером.

1 голос
/ 22 июня 2012

Попробуйте это в вашем конечном состоянии

<end-state id="exit" view="externalRedirect:controllerURL" />

где 'controllerURL' - это URL, который ваш контроллер прослушивает /

0 голосов
/ 03 января 2013

написать dispatcher-sevlet.xml или файл конфигурации, написать отдельный файл конфигурации (для удобства) для Spring Flows, просто импортируйте файлы в dispatcher-servlet.xml.

...