Java Spring Framework - как установить тип контента? - PullRequest
6 голосов
/ 09 апреля 2010

У меня есть пружинное действие, которое я рендерингом некоторого json из контроллера, в тот момент, когда он возвращает тип контента 'text / plain; charset = ISO-8859-1'.

Как я могу изменитьэто будет 'application / json'?

Спасибо, Джон

Ответы [ 4 ]

18 голосов
/ 09 апреля 2010

Передайте HttpServletResponse вашему методу действия и установите тип контента там:

public String yourAction(HttpServletResponse response) {
    response.setContentType("application/json");
}
5 голосов
/ 01 мая 2010

Вы пытались использовать MappingJacksonJsonView ?

Spring-MVC Представление, отображающее содержимое JSON путем сериализации модели для текущего запроса с использованием ObjectMapper Джексона.

Устанавливает тип содержимого: application/json.

2 голосов
/ 03 мая 2011
 @RequestMapping(value = "jsonDemoDude", method = RequestMethod.GET)
    public void getCssForElasticSearchConfiguration(HttpServletResponse response) throws IOException {        
        String jsonContent= ...;
        HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(response);
        wrapper.setContentType("application/json;charset=UTF-8");
        wrapper.setHeader("Content-length", "" + jsonContent.getBytes().length);
        response.getWriter().print(jsonContent);
}

Вы также можете добавить дополнительные байты X или что-то еще для части «обратного вызова», если хотите JSONP (межсайтовый запрос json).

2 голосов
/ 13 апреля 2010

Да, но это работает, только если кто-то захватывает HttpServletResponse в контроллере.

В Spring 3 нам рекомендуется избегать ссылок на что-либо в области сервлетов, оставляя только наши POJO и аннотации. Есть ли способ сделать это без ссылки на HttpServletResponse? Т.е., сохраняя себя чистым ?

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