2012-11-20 4 views
2

스프링 웹 플로우 소스를 다운로드했으며 jsf-booking 샘플로 REST 채널 (데이터베이스의 이미지 표시)을 추가하고 싶습니다. 이 채널은 내 Spring-MVC 샘플 애플리케이션에서 문제없이 작동했습니다.Spring Webflow 응용 프로그램에 REST 채널을 추가하는 방법은 무엇입니까?

그러나 주어진 주소에서 JSF 핸들러가 display.xhtml 파일이 존재하지 않으며 REST 리스너가 해당 요청을 처리해야한다는 오류 메시지로 응답하므로 맵핑에 문제점이 있습니다.

내가 핸들러 등록하는 방법입니다

@Controller 
@RequestMapping(value="/image") 
public class ImageChannelImpl implements ImageChannel { 

    @RequestMapping(value="/display.png", method=RequestMethod.GET) 
    public void display(HttpServletResponse response) throws IOException { 
(...) 
     response.setContentType("image/png"); 
     ImageIO.write(img, "PNG", response.getOutputStream()); 
     response.getOutputStream().flush();  
     log.debug("display finished"); 
    } 

} 내가 핸들러 매핑을 복사 한

을;

<bean 

    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <util:list id="beanList"> 
      <ref bean="stringHttpMessageConverter" /> 
      <ref bean="byteArrayHttpMessageConverter" /> 
     </util:list> 
    </property> 
</bean> 

<bean id="stringHttpMessageConverter" 
    class="org.springframework.http.converter.StringHttpMessageConverter" /> 

<bean id="byteArrayHttpMessageConverter" 
    class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /> 

DispatcherServlet에가 수신 대기/봄/* 요청 : 그래서

<!-- The front controller of this Spring Web application, responsible for handling all application requests --> 
<servlet> 
    <servlet-name>Spring MVC Dispatcher Servlet</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> 

<!-- Map all /spring requests to the Dispatcher Servlet for handling --> 
<servlet-mapping> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    <url-pattern>/spring/*</url-pattern> 
</servlet-mapping> 

, 나는이 이미지가 주소 /spring/image/display.png에서 사용할 수 있지만 것으로 예상했다 REST 핸들러는 요청을 처리하지 않고 /image/display.png를 처리하지도 않습니다.

그래서 REST 채널을 등록 할 수 있도록 구성에서 변경해야하는 항목은 무엇입니까? Google에 샘플이나 설명서, Spring WebFlow와 Spring MVC 채널을 모두 구성하는 방법을 알려 주려고했지만 아무것도 찾지 못했습니다.

답변

0

당신은 당신의 FlowHandlerMapping에 대한 '기본 핸들러를'정의해야합니다 :

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"> 
    <property name="flowRegistry" ref="flowRegistry"/> 
    <property name="order" value="0"/> 
    <!--If no flow match, map path to a view to render; e.g. the "/intro" path would map to the view named "intro" --> 
    <property name="defaultHandler" ref="requestMappingHandlerMapping"/> 
</bean> 

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" id="requestMappingHandlerMapping"> 
    <property name="order" value="1"/> 
</bean> 

당신은 AnnotationMethodHandlerAdapter이 스프링 MVC 버전에 따라 함께 RequestMappingHandlerMapping 대체 할 수

(RequestMappingHandlerMapping 지난 SMVC에서 선호하는 방법 자료입니다)
관련 문제