Есть ли способ настроить Spring MVC, чтобы принять тип контента? - PullRequest
1 голос
/ 20 января 2012

У меня есть метод, которому я хочу опубликовать некоторые данные JSON, который выглядит следующим образом

@RequestMapping(value = "/m1", method = RequestMethod.POST)
public Object m1(@RequestBody Map<String, ?> body) {
    // do something
}

Это прекрасно работает, когда я устанавливаю заголовок content-type на application/json при публикации, но выдает ошибку, если не делает (не может десериализовать тело сообщения на карту, потому что не знает, как)

Что бы мне пришлось настроить весной, чтобы оно использовало application/json по умолчанию, когда заголовок не указан?

1 Ответ

1 голос
/ 20 января 2012

Класс, который преобразует JSON в ваш объект, называется HttpMessageConverter.Я предполагаю, что вы используете Джексон по умолчанию, который поставляется с Spring.Вы можете написать собственный MessageConverter, который всегда будет возвращать true в своем методе support с типом объекта ответа, а затем просто вызывать httpconverter Джексона в ваших методах readInternal и writeInternal.Однако, если вы сделаете это, будьте осторожны, так как после регистрации в вашем обработчике запросов он будет запрашиваться по всем @ResponseBody и @RequestBody запросам.

...