2011-03-28 69 views
2

我正在將Spring Web Flow集成到Spring MVC Web應用程序中。MVC控制器和Web Flow Controller - 請求處理優先級

我映射春天DispatcherServlet*.html像下面一樣。

<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

我已經註冊簡單的流量(/WEB-INF/flows/simple/simple-flow.xml/WEB-INF/flows/simple/simple.jsp),其根據配置得到simple ID。

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows"> 
    <webflow:flow-location-pattern value="/**/*-flow.xml" /> 
</webflow:flow-registry>  

我映射/simple.html/WEB-INF/pages/simple.jsp)到我的MVC控制器。

@Controller 
public class SimpleController { 

    @RequestMapping("/simple.html") 
    public String simpleHandler(Model model) { 
     return "simple";      
    } 
} 

當我請求simple.html,所述SimpleController獲取請求,但是當我刪除映射到該控制器,simple.html導致simple流動。我看到MVC控制器具有更高的優先級並在到達流量控制器之前獲得請求。其中的結果是什麼?在這種情況下它是如何工作的?我可以更改普通MVC控制器和Web Flow控制器的請求處理順序/優先級嗎?

+0

你見過http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch10s03.html? – axtavt 2011-03-28 12:27:45

+0

是的,我有相同的配置。那麼......? – marioosh 2011-03-29 06:41:42

回答

7

我已經使用order屬性完成了它。它默認設置爲0,MVC控制器在流量控制器之前處理請求。我將訂單設置爲-1,現在流控制器處理請求到達我的MVC控制器。這是好的解決方案嗎?

<!-- Handle request after MVC controllers -->  
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> 
    <property name="flowRegistry" ref="flowRegistry"/> 
    <property name="order" value="0"/> 
</bean> 

<!-- Handle request BEFORE MVC controllers -->  
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> 
    <property name="flowRegistry" ref="flowRegistry"/> 
    <property name="order" value="-1"/> 
</bean>