Служите JSON "как есть" из контроллера Spring, используя согласование содержимого - PullRequest
0 голосов
/ 22 октября 2010

В моем веб-приложении все мои конвертеры сообщений на месте, и если я изменю приведенный ниже getContent для возврата bean / pojo, он вернется как «application / json; charset = UTF-8», что ожидается, но теперь я хочу служить JSON "как есть".

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

@Controller
public class StubController {

    @Autowired
    @Qualifier("keyValueStore")
    private KVStore kv;

    @RequestMapping(value = "/stub/{id}", method = RequestMethod.GET)
    public @ResponseBody
    String getContent(@PathVariable("id") final String id) {
        return kv.get(id);
    }

    @RequestMapping(value = "/stub/{id}", method = RequestMethod.PUT)
    public String putContent(@PathVariable("id") final String id, @RequestBody String body) {
        kv.set(id, body);
        return "redirect:/stub/"+id;
    }

}

Однако получатель возвращает заголовок «Content-Type: text / html; charset = UTF-8», если я вызываю http://host/stub/123.json в браузере. Я предполагаю, что это происходит потому, что я не возвращаю ничего, «преобразованного» конвертером Джексона, поэтому заголовок возврата не изменяется.

Мне нужно, чтобы это был application / json - есть идеи, что делать? Возможно, аннотация, с помощью которой я могу указать возвращаемые заголовки?

1 Ответ

0 голосов
/ 25 октября 2010

Мне удалось обойти это, добавив параметр HttpServletResponse в мой метод getContent () и непосредственно указав тип содержимого.

http://forum.springsource.org/showthread.php?t=97140

    @RequestMapping(value = "/stub/{id}", method = RequestMethod.GET)
    public @ResponseBody String getContent(@PathVariable("id") final String id, HttpServletResponse response) {
        response.setContentType("application/json");
        return kv.get(id);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...