MVC控制器和Web流量控制器 - 请求处理优先级

mar*_*osh 2 spring-mvc spring-webflow

我正在将Spring Web Flow集成到Spring MVC Web应用程序中.

我将Spring映射DispatcherServlet*.html下面.

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我已经注册了简单的流(/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>    
Run Code Online (Sandbox Code Playgroud)

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

@Controller
public class SimpleController {

    @RequestMapping("/simple.html")
    public String simpleHandler(Model model) {
        return "simple";                    
    }
}
Run Code Online (Sandbox Code Playgroud)

当我请求时simple.html,SimpleController获取该请求,但是当我删除到该控制器的映射时,simple.html会导致simple流动.我看到MVC控制器具有更高的优先级并在它到达流量控制器之前得到请求.其结果是什么?在那种情况下它是如何工作的?我可以更改普通MVC控制器和Web Flow控制器的请求处理顺序/优先级吗?

mar*_*osh 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>
Run Code Online (Sandbox Code Playgroud)