2014-09-16 2 views
2

스프링 MVC 애플리케이션과 함께 스프링 웹 플로우를 사용하려고합니다. 예를 들어 mvc 예제를 살펴본 후이를 따라했지만 웹의 예제는 대부분 Tiles.I Hope로 이루어집니다. Spring Webflow를 Spring MVC와 함께 사용할 수있다.스프링 웹 플로우가있는 스프링 MVC

Spring MVC 컨트롤러를 사용하려고한다.하지만 submit/finish와 같은 전환을 수행 할 때 아무 것도 일어나지 않는 것으로 보인다.

<form:form> 
    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}" /> 
    <input type="hidden" name="_eventId" value="finished" /> 
    <input type="submit" value="Submit" name="_eventId_finished" /> 
</form:form> 

을 그리고 마지막으로 내 구성 :

@RequestMapping(value = "/enterBookingDetails", method = RequestMethod.GET) 
    public ModelAndView getPage(final HttpServletRequest request) { 
     ModelAndView modelView = new ModelAndView(); 
     modelView.setViewName("pa"); 
     return modelView; 
    } 

    @RequestMapping(value = "/reviewBooking", method = RequestMethod.GET) 
    public ModelAndView getPage2(final HttpServletRequest request) { 

     ModelAndView modelView = new ModelAndView(); 
     modelView.setViewName("pb"); 
     return modelView; 
    } 

내 JSP로는 다음과 같습니다

<view-state id="enterBookingDetails"> 
     <transition on="submit" to="reviewBooking" /> 
    </view-state> 

    <view-state id="reviewBooking"> 
     <transition on="confirm" to="bookingConfirmed" /> 
     <transition on="revise" to="enterBookingDetails" /> 
     <transition on="cancel" to="bookingCancelled" /> 
    </view-state> 

가 나는 enterBookingDetails 및 reviewBooking 컨트롤러로 정의 : 여기

내 흐름 XML이다 :

<bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="mvcViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
     <property name="order" value="1" /> 

    </bean> 

     <!-- Register all Web Flow definitions under /WEB-INF/flows/**/*-flow.xml --> 
    <webflow:flow-registry id="flowRegistry" 
     base-path="/WEB-INF/flows" flow-builder-services="flowBuilderServices"> 
     <webflow:flow-location-pattern value="/**/*-flow.xml" /> 
    </webflow:flow-registry> 

    <!-- Deploy a flow executor --> 
    <webflow:flow-executor id="flowExecutor" /> 

    <!-- Configure flow builder services --> 
    <!-- Configure view service --> 
    <webflow:flow-builder-services id="flowBuilderServices" 
     view-factory-creator="mvcViewFactoryCreator" /> 
    <!-- Web Flow components --> 
    <!-- Install flow handler (FlowHandlerAdapter) --> 
    <!-- It dispatches URL requests to flows --> 
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"> 
     <property name="flowExecutor" ref="flowExecutor" /> 
    </bean> 

    <!-- Map Http request path to flows register in the registry --> 
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> 
     <property name="flowRegistry" ref="flowRegistry" /> 
     <property name="order" value="0" /> 
    </bean> 
    <bean id="mvcViewFactoryCreator" 
     class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"> 
     <property name="viewResolvers" ref="mvcViewResolver"/> 
    </bean> 

답변

1

스프링 웹 플로우는 스프링 웹 MVC를 기반으로하므로 두 개를 함께 사용할 수 있습니다.

이 조합의 문제점은 잘못 구성된 것이있을 때 유일한 현상은 "아무 일도 일어나지 않습니다"라는 것입니다. 궁극적으로 org.springframework.web 및 org.springframework.webflow에 대한 디버그 로그를 조사한 다음 구성 문제를 진단하기위한 스프링 소스 코드를 추적합니다.

스프링 패러다임은 "컨벤션 오버 컨벤션"을 목표로합니다. 내가 가지고있는 문제는 협약이 이미 잘 알고있는 누군가가 쉽게 파악할 수있는 방식으로 항상 정의되지는 않는다는 것입니다.

해결해야 할 마지막 "잡았다"는 스프링 웹 플로우의 규칙은 jsp의 것과 같은 폴더에 플로우 XML 파일을 넣는 것입니다.

예를 들어, 동일한보기 뒤에 스프링 웹 플로우와 채워지지 않은 웹 MVC간에 전환을 계획하고있는 것으로 보입니다. 주어진 URI에 대해 모든 것이 올바르게 구성 되었다면, 웹 플로우 레지스트리에있는 것이 무엇이든지 UrlHandlerMapping에있는 것 (주석)보다 우선합니다. 이 사실을 모르는 경우 혼란이 생길 ​​수 있습니다.