我有下面的代码(这是控制器中的一种方法)下载附件/文档:
@RequestMapping(value="downloadattachment.htm",method=RequestMethod.GET) public ResponseEntity<Blob> downloadAttachment(@RequestParam("attachmentid") int attachmentId){ //Attachment is a POJO. Attachment attachment= commonDao.getAttachment(attachmentId); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentType(new MediaType(attachment.getContentType())); responseHeaders.set("Content-Disposition", "attachment; filename=\"" + attachment.getFileName() +"\""); return new ResponseEntity<Blob>(attachment.getFileData(), responseHeaders, HttpStatus.CREATED); }当我运行它时会出现以下错误:
The request sent by the client was syntactically incorrect ().
我使用瓷砖,所以我的解析器是:
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> </bean>它是否以某种方式与平铺相关,因为所有视图都是通过平铺定义进行解析的? 但我认为(根据spring reference),当使用
@ResponseBody
或ResponseEntity<T>
时,处理程序方法的返回类型直接写入HTTP响应主体(而不是放置在模型中,或被解释为视图名称)。
1 个回复
somnis 2018-12-22
赞同来自:
问题在于请求而不是响应。
我认为你不是从客户端发送参数attachmentId或请求转到其他一些控制器方法。