У меня есть контроллер, обслуживающий изображения из внешнего каталога (скажем c: \ images \ userID \ photo.png), и этот контроллер выполняет свою работу очень хорошо. Тем не менее, тег img в моем JSP-файле показывает значок изображения вместо изображения, возвращаемого этим контроллером.SPRING MVC 3 - НЕ отображать изображение в JSP
Вот мой контроллер:
@RequestMapping(value = "/load/{imageId}/", method = RequestMethod.GET)
public ResponseEntity<byte[]> loadImage(@PathVariable("imageId") Long imageId, HttpServletRequest request)
{
final org.springframework.http.HttpHeaders headers = new org.springframework.http.HttpHeaders();
BufferedImage image;
Photo photo = photoManager.getSinglePhoto(imageId);
headers.setContentType(MediaType.IMAGE_PNG);
try
{
if (photo == null)
{
File defaultFile = new File("c:/images/default.png");
image = ImageIO.read(defaultFile);
return new ResponseEntity<byte[]>(((DataBufferByte)image.getData().getDataBuffer()).getData(), headers, HttpStatus.CREATED);
}
File file = new File(photo.getPath());
image = ImageIO.read(file);
return new ResponseEntity<byte[]>(((DataBufferByte)image.getData().getDataBuffer()).getData(), headers, HttpStatus.CREATED);
}
catch (IOException ex)
{
return new ResponseEntity<byte[]>(null, headers, HttpStatus.NOT_FOUND);
}
}
Я нашел чтение других ответов здесь, что мне нужно включить messageConverters в моем контексте приложения, и я это сделал.
Вот часть моего приложения-context.xml
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list>
<bean id="byteArrayMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
</util:list>
</property>
</bean>
Редактор XML затмение жалуется MethodHandlerAdapter устаревшим.
JSP:
<img src="/mavenspringapp/photo/load/131/" width="128" height="128" alt="laf02.jpg">
Почему не изображение отображается получение, даже когда контроллер отправляет ответ правильно (201). Заранее спасибо.
версия пружины пользуется –
это 3.2.1.RELEASE –
он показывает значок сломанных изображений, даже если ответ 201 –