Использование ResponseEntity <T> - PullRequest
1 голос
/ 22 января 2012

У меня есть следующий код (это метод в контроллере), чтобы загрузить вложение / документ:

@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>

Относится ли это каким-либо образом к плиткам, поскольку разрешение всех видов происходит через определение плиток?

Но я думаю (в соответствии со ссылками на пружину), когда используется @ResponseBody или ResponseEntity<T>, возвращаемый тип метода-обработчика записывается прямо в тело ответа HTTP (а не помещается в модель или интерпретируется как посмотреть имя).

1 Ответ

2 голосов
/ 22 января 2012

Проблема связана с запросом, а не с ответом.

@RequestParam("attachmentid") int attachmentId

Я думаю, что вы не отправляете параметр attachmentId от клиента или запрос идет к другому методу контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...