Я новичок в Spring MVC, но меня очень впечатлили его возможности.
Я использую 3.1.0-RELEASE, и мне нужно показать PDF-файл в ответ на форму: отправка формы.
Вот (небольшой) код, который я написал в контроллере:
@RequestMapping(value = "new_product", method = RequestMethod.POST, params = "print")
@ResponseBody
public void saveAndShowPDF(ModelMap map, ShippingRequestInfo requestInfo, HttpServletRequest request, HttpServletResponse httpServletResponse) throws IOException {
saveProductChanges(map, requestInfo, request, httpServletResponse);
httpServletResponse.setContentType("application/pdf");
byte[] pdfImage = productService.getPDFImage(requestInfo.getRequestId());
httpServletResponse.getOutputStream().write(pdfImage);
}
Этот код отправляет байт PDF [] обратно в исходное окно.
Как сделать так, чтобы PDF-файл отображался в отдельном окне, чтобы в исходном окне браузера все еще мог отображаться другой контент? Лучшим способом было бы показать PDF-файл с помощью клиентской программы просмотра PDF-файлов (Adobe Reader, FoxIt и т. Д.), Но я бы не возражал, если бы PDF-файл отображался в отдельном окне браузера.
РЕДАКТИРОВАТЬ: Я решил настроить Content-Disposition так, чтобы браузер отображал окно сохранения / открытия, в котором пользователь мог открывать Adobe (с потерей главной страницы браузера).
httpServletResponse.setHeader("Content-Disposition","attachment;filename=cool.pdf");
Спасибо всем!