2011-03-28 68 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>