MVC Controller и Web Flow Controller - приоритеты обработки запросов - PullRequest
2 голосов
/ 28 марта 2011

Я работаю с интеграцией Spring Web Flow в Spring MVC.

Я сопоставил Spring 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 идентификатор в соответствии с конфигурацией.

<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?

1 Ответ

7 голосов
/ 29 марта 2011

Я сделал это используя свойство 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>
...