এখানে কয়েকটি উত্তর ছাড়াও কয়েকটি পয়েন্টার (স্প্রিং 4.1)।
আপনার নিজের ওয়েবমেভসি কনফিগটিতে ResponseEntity
আপনার @ResponseBody
কাজের মধ্যে ভালভাবে কনফিগার করা কোনও মেসেজকভার্টার নেই Inc
যদি আপনি না, অর্থাত আপনি যদি একটি আছে MappingJackson2HttpMessageConverter
কনফিগার (আমার মত) ব্যবহার করে ResponseEntity
আয় একটি org.springframework.http.converter.HttpMessageNotWritableException
।
এই ক্ষেত্রে শুধুমাত্র কাজ সমাধান মোড়ানো হয় byte[]
মধ্যে @ResponseBody
নিম্নরূপ:
@RequestMapping(value = "/get/image/{id}", method=RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] showImageOnId(@PathVariable("id") String id) {
byte[] b = whatEverMethodUsedToObtainBytes(id);
return b;
}
এক্ষেত্রে আপনার ওয়েবএমভিসি কনফিগে বার্তা রূপান্তরকারীগুলিকে সঠিকভাবে কনফিগার করতে (এবং একটি যোগ করুন ByteArrayHttpMessageConverer
) মনে রাখবেন:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(mappingJackson2HttpMessageConverter());
converters.add(byteArrayHttpMessageConverter());
}
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper);
return converter;
}
@Bean
public ByteArrayHttpMessageConverter byteArrayHttpMessageConverter() {
ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter();
arrayHttpMessageConverter.setSupportedMediaTypes(getSupportedMediaTypes());
return arrayHttpMessageConverter;
}
private List<MediaType> getSupportedMediaTypes() {
List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.IMAGE_JPEG);
list.add(MediaType.IMAGE_PNG);
list.add(MediaType.APPLICATION_OCTET_STREAM);
return list;
}