【发布时间】:2019-11-22 10:22:06
【问题描述】:
我有一个 spring mvc 控制器,它产生一个“应用程序/pdf”来下载生成的 pdf。我想始终返回 pdf 并根据某些条件返回不同的 HTTP 代码。
我尝试返回一个 ResponseEntity 对象,但 PDF 的响应总是 200(总是生成 pdf,但我需要不同的状态响应)。
@RequestMapping(value = "/obtain/downloadPDF", method = RequestMethod.GET, produces = "application/pdf")
@ResponseBody
public ResponseEntity<?> getPdfFile(HttpServletResponse response,HttpServletRequest request) throws IOException{
response.setHeader("Content-disposition", "inline; filename=\"" +"file.pdf" +"\"");
String error = getPDF(response, request);
logger.debug("PDF error : " + StringUtils.defaultIfEmpty(error,"null") );
return new ResponseEntity<>("",HttpStatus.INTERNAL_SERVER_ERROR);
}
注意:在getPDF方法中,只是生成pdf并将其写入response.getOutputStream()的代码。
我的想法是我想始终在输出流中返回 pdf,但结果代码不同(200、500 等)。我返回 500 时的事件,我想返回 PDF。有可能吗?
任何帮助将不胜感激。
【问题讨论】:
-
您好,您是如何在 getPDF() 中返回错误的,请分享代码
-
错误是如何产生的并不重要,因为总是返回 200,即使我直接使用:return new ResponseEntity(Http Status.INTERNAL_SERVER_ERROR)
-
如果您的 getPDF() 正在返回一些字符串,无论是否存在错误,那么它总是不为空,总是给出 200。所以你能检查一下并告诉我
-
我在最初的帖子中更改了代码,因为它可能令人困惑,因为如果我在 responseEntity 中直接返回 500,浏览器将返回 pdf 和 200。
-
你好 moisesbelda,看看我的回答,让我知道你的想法
标签: java spring spring-mvc