2011-05-31 6 views
9

के साथ कस्टम सामग्री-प्रकार भेजना मैं अपने स्प्रिंग वेबएमवीसी 3.0.5 नियंत्रक में ResponseEntity रिटर्न प्रकार का उपयोग करने का प्रयास कर रहा हूं। मैं एक छवि लौटने हूँ, इसलिए मैं निम्नलिखित कोड के साथ छवि/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 में पाठ/html को अधिरोहित जा रहा है।

अपने स्वयं के HttpMessageConverter को लागू करने और AnnotationMethodHandlerAdapter में इंजेक्शन करने के अलावा, क्या मेरे लिए सामग्री-प्रकार को मजबूर करने का कोई तरीका है?

उत्तर

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

धन्यवाद गौकी, मुझे पूरा यकीन है कि काम करेगा। लेकिन, और मुझे पहले से जोड़ा जाना चाहिए था, यह सर्वलेट एपीआई से decoupling के वसंत सपने में रहने का एक अभ्यास था। आम तौर पर इस स्थिति में मैं वसंत को HttpServletResponse में पास करने के लिए मिलता हूं और प्रतिक्रिया आउटपुट स्ट्रीम पर सीधे लिखता हूं। धन्यवाद औश्र सबकुछ वही है। – Nigel

+1

वह पूरी तरह से भयानक था। यह मेरे लिए 100% काम किया। कृपया ध्यान दें कि response.setContentType ("image/gif"); लाइन कुछ नहीं करता है। कुंजी बाकी में है। – Spider

+0

ऐसा लगता है कि जब आप इस तकनीक का उपयोग करते हैं तो आपको 406 त्रुटि मिल सकती है, जो मेरे मामले में हल हो गया था, नीचे दिए गए SO उत्तर के रूप में एक प्रतिक्रिया प्रतिक्रिया को वापस कर रहा था http://stackoverflow.com/questions/8049153/doesnt-accept-spring-mvc -responseentityresource-एक-imputstreamresource –

संबंधित मुद्दे