0
새 탭에서 pdf를 열고 싶습니다. 스프링 컨트롤러가 너무 (왜 그런지 모르지만 내 URL 매개 변수도 .pdf를 추가해야합니다.) :스프링 컨트롤러가 잘못된 헤더가있는 PDF 인라인을 반환합니다.
@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_FLEET_ENG', 'ROLE_VIEW_ENG')")
@Override
@RequestMapping(value = { "applications/cars/acquisitions/pdf/{idAcquisition}/{pdfName}"},produces = "application/pdf", method = RequestMethod.GET)
public @ResponseBody ResponseEntity<byte[]> showPdf(@PathVariable("idAcquisition") int idAcquisition, @PathVariable("pdfName") String pdfName){
try {
byte[] pdfContents = fleetAndCarService.showPdf(idAcquisition, pdfName + ".pdf");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
headers.add("content-disposition", "inline; filename=" + pdfName +".pdf");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(
pdfContents, headers, HttpStatus.OK);
return response;
}
catch (Exception e) {
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e);
LOG.error("Threw exception in FleetAndCarControllerImpl::showPdf :" + errorResponse.getStacktrace());
//TODO what do I have to return?
return null;
}
}
하지만 내가받은 406 오류 : 내 헤더를 구성해야 할 방법 The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
덕분에이 코드로 해결
실제로 무엇이 406인지 그리고 오류가 무엇을 말하고 있습니까? 그것은 당신이 pdf가 아닌 무언가를 요구하고 있다고 말하고 있습니다. 당신의 매핑에서 명시 적으로 그것이'application/pdf'를 리턴한다고 말하고 있지만 당신의 브라우저는 아마도'text/html'과 다른 헤더를 가지고있을 것입니다. 그것들은 오류와 일치하지 않습니다. URL에'.pdf'를 추가하면 정확한 변환과 헤더가 트리거되므로이를 수정합니다. –
예, 허용 된 형식으로 pdf를 설정하지 않습니다. 내 URL은 정확합니다. http : // localhost : 8086/DART/fleetAndCar/applications/cars/acquisitions/pdf/179/13_Test2.pdf – luca