Я заставил его работать, избавившись от @ResponseBody
и вместо этого вручную выполнив преобразование (всегда используя Джексона), то есть
Response r = new Response();
ObjectMapper mapper = new ObjectMapper();
JsonGenerator generator = mapper.getJsonFactory().createJsonGenerator(response.getOutputStream(), JsonEncoding.UTF8);
try {
File f = uploadService.getAjaxUploadedFile(request);
r.setData(f.getName());
} catch (Exception e) {
logger.info(e.getMessage());
r = new Response(new ResponseError(e.getMessage(), ""));
}
mapper.writeValue(generator, r);
generator.flush();
Кто-нибудь знает другой способ?Я попытался настроить ContentNegotiatingViewResolver , но я не хочу нарушать какие-либо другие контроллеры, назначая все hmtl для json.Кроме того, я попытался сделать это для этого метода только с помощью специального средства просмотра изображений, но когда я настраиваю jsonview и использую BeanNameViewResolver
, хотя ответ правильно преобразуется в JSON, сервер выдает исключение HttpRequestMethodNotSupportedException:
, при этом метод запроса POSTподдерживается и устанавливается статус 404.