2011-05-31 116 views
9

我想在我的Spring WebMVC 3.0.5控制器中使用ResponseEntity返回類型。我回的圖像,所以我想設置的內容類型爲image/GIF用下面的代碼:發送與ResponseEntity自定義內容類型<Resource>

@RequestMapping(value="/*.gif") 
public ResponseEntity<Resource> sendGif() throws FileNotFoundException { 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.IMAGE_GIF); 
    return new ResponseEntity<Resource>(ctx.getResource("/images/space.gif"), headers, HttpStatus.OK); 
} 

然而,返回類型被覆蓋在ResourceHttpMessageConverter text/html的。

除了實現我自己的HttpMessageConverter並將其注入AnnotationMethodHandlerAdapter之外,是否有任何方法可以強制Content-Type?

回答

9

嘗試注入HttpServletResponse對象並從那裏強制內容類型。

@RequestMapping(value="/*.gif") 
public ResponseEntity<Resource> sendGif(final HttpServletResponse response) throws FileNotFoundException { 
      HttpHeaders headers = new HttpHeaders(); 
      headers.setContentType(MediaType.IMAGE_GIF); 
      response.setContentType("image/gif"); // set the content type 
      return new ResponseEntity<Resource>(ctx.getResource("/images/space.gif"), headers, HttpStatus.OK); 
     } 
+1

感謝gouki,我敢肯定,這將工作。但是,我應該預先加入,這是一個練習,從生活中解脫出servlet API的春天夢想。通常在這種情況下,Spring會傳入HttpServletResponse並直接寫入響應輸出流。非常感謝。 – Nigel 2011-06-01 04:52:37

+1

那真是太棒了。它爲我工作100%。請注意,response.setContentType(「image/gif」);線路什麼都不做。其餘的關鍵在於關鍵。 – Spider 2011-09-13 20:34:29

+0

這似乎是當你使用這種技術時,你可能會得到一個406錯誤,在我的情況下解決了什麼是返回一個ResponseEntity 作爲下面的答案回答http://stackoverflow.com/questions/8049153/doesnt-accept-spring-mvc -responseentityresource-AN-imputstreamresource – 2013-08-24 21:11:13

相關問題