ResponseEntity<T>的用法

bnemo 发布于 2018-12-22 spring 最后更新 2018-12-22 07:51 1925 浏览

我有下面的代码(这是控制器中的一种方法)下载附件/文档:

@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),当使用@ResponseBodyResponseEntity<T>时,处理程序方法的返回类型直接写入HTTP响应主体(而不是放置在模型中,或被解释为视图名称)。

somnis 2018-12-22

赞同来自:

问题在于请求而不是响应。

@RequestParam("attachmentid") int attachmentId
我认为你不是从客户端发送参数attachmentId或请求转到其他一些控制器方法。