我正在将Spring Web Flow集成到Spring MVC Web应用程序中。
我将Spring DispatcherServlet
映射到*.html
,如下所示。
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
我已经注册了根据配置得到/WEB-INF/flows/simple/simple-flow.xml
id的简单流程(/WEB-INF/flows/simple/simple.jsp
,simple
)。
<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 :(得分: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>