2010-01-21 79 views
4

我有一個使用spring framework和spring webflow開發的j2ee應用程序。目前,我的所有網址請求均通過Web Flow。我想要的是能夠選擇是將其引導至Web Flow還是普通的彈簧mvc控制器。我不知道如何將它引導到自定義控制器。我該怎麼做呢?Spring MVC - Web Flow Controller

我想在我的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> 
+0

我建議你參考[Spring Web Flow:Spring MVC Integration](http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch10.html)。 – 2010-01-21 07:29:23

+0

什麼是接近我需要的是你給的鏈接中的自定義流程處理主題。有沒有辦法將請求不是指向Webflow,而是指向另一個控制器。我在我的問題中添加了一些東西 – cedric 2010-01-21 08:26:01

+0

如果Spring中真的沒有別的方法,我可以用普通的Servet Filter來實現。實際上,目前並沒有和Spring一起工作,而且我上一次工作已經2年了。 – 2010-01-22 07:32:26

回答

1

在你的最終狀態試試這個

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

其中'controllerURL'是您的控制器監聽的URL/

1

將Web Flow和普通Spring MVC控制器混合使用的最簡單方法是隻將簡單的控制器註冊到URL之外的任何URL你的流動路徑。

例如,這裏有我們的配置文件中的一些摘錄,由DispatchServlet的單個實例從web.xml加載:

<!-- 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將註冊對應於一個WEB-INF所有URL路徑/ * */something-flow.xml文件,並且所有其他URL路徑(如/selectLanguage above)都可以由常規控制器處理。

0

編寫一個dispatcher-sevlet.xml或配置文件,爲Spring Flow編寫一個單獨的配置文件(爲了方便起見),只需將文件導入到dispatcher-servlet.xml中即可。