2010-01-21 9 views
4

스프링 프레임 워크와 스프링 웹 플로우를 사용하여 개발 된 j2ee 애플리케이션이 있습니다. 현재 나의 모든 url 요청은 Web Flow를 거치게됩니다. 내가 원하는 것은 웹 플로우 또는 일반 스프링 MVC 컨트롤러로 보낼지 여부를 선택할 수 있어야한다는 것입니다. 나는 그것을 어떻게 커스텀 컨트롤러로 보낼지 전혀 모른다. 어떻게해야합니까?스프링 MVC - 웹 플로우 컨트롤러

나는 나의 web.xml에이를 가진 시도하지만 난

<servlet> 
    <servlet-name>mytest</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>mytest2</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation2</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 


<servlet-mapping> 
    <servlet-name>mytest</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>mytest2</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/web-application-config.xml 
</param-value> 
</context-param> 

<context-param> 
    <param-name>contextConfigLocation2</param-name> 
    <param-value> 
     /WEB-INF/mytest2-servlet.xml 
</param-value> 
</context-param> 
+0

[스프링 웹 플로우 : 스프링 MVC 통합] (http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch10.html)을 참고하기 바란다. –

+0

사용자가 제공 한 링크에서 사용자 지정 흐름 처리기 항목이 무엇이 필요한가에 가깝습니다. 웹 플로우가 아닌 다른 컨트롤러로 요청을 보내는 방법이 있습니까? 내 질문에 뭔가를 추가했습니다. – cedric

+0

Spring에서 다른 방법이 없다면 일반 Servet Filter로 처리 할 수 ​​있습니다. 사실, 현재 Spring과 함께 작업하지 않으며, 마지막으로 작업한지 2 년이 넘었습니다. –

답변

1

가 최종 상태에서 이것을 시도 mytest2-servlet.xml 파일에 지정된 빈 컨트롤러로 직접 할 수

<end-state id="exit" view="externalRedirect:controllerURL" /> 

여기서 'controllerURL'은 컨트롤러가 청취하는 URL입니다./

1

웹 플로우와 일반 스프링 MVC 컨트롤러를 혼합하는 가장 간단한 방법은 임의의 외부 URL 경로에 일반 컨트롤러를 등록하는 것입니다 귀하의 흐름 경로 중.

<!-- Simple URL-view mapping without controller (or flow) --> 
<mvc:view-controller path="/selectLanguage" view-name="selectLanguage"/> 

<!-- Maps request paths to flows in the flowRegistry; 
    e.g. a path of /hotels/booking looks for a flow with id "hotels/booking". --> 
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping" p:order="-1"> 
    <property name="flowRegistry" ref="flowRegistry" /> 
    <property name="interceptors"> 
     <list> 
      <!-- for each flow, if a param lang=xx is added, switch locales --> 
      <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" 
        p:paramName="lang"/> 
     </list> 
    </property> 
</bean> 

<!-- The registry of executable flow definitions --> 
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF"> 
    <!-- Flows created from all -flow.xml files, with the flow ID being the path name --> 
    <webflow:flow-location-pattern value="/**/*-flow.xml" /> 
</webflow:flow-registry> 

그래서 WebFlow는 WEB-INF에 해당하는 모든 URL 경로/등록합니다 * :

는 예를 들어, 여기에 DispatchServlet의 단일 인스턴스에 의해 web.xml에서로드 우리의 구성 파일에서 일부 발췌입니다 */something-flow.xml 파일 및 기타 모든 URL 경로 (예 : /selectLanguage above)는 일반 컨트롤러에서 처리 할 수 ​​있습니다.

0

dispatcher-sevlet.xml 또는 구성 파일을 작성하고 Spring Flow 용 별도 구성 파일을 작성하여 dispatcher-servlet.xml에 파일을 가져 오면됩니다.

관련 문제