开发者

Java spring framework - how to set content type?

I have a spring action that I am rendering some json from the controller, at the minute its returning the content开发者_运维技巧 type 'text/plain;charset=ISO-8859-1'.

How can I change this to be 'application/json'?


Pass the HttpServletResponse to your action method and set the content type there:

public String yourAction(HttpServletResponse response) {
    response.setContentType("application/json");
}


Did you try using the MappingJacksonJsonView?

Spring-MVC View that renders JSON content by serializing the model for the current request using Jackson's ObjectMapper.

It sets the content-type to: application/json.


 @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);
}

You can also add the aditional X bytes or whatever for "callback" part in case you want JSONP ( cross site json request ) .


Yes, but this only works if one is grabbing the HttpServletResponse in the controller.

In Spring 3 we're being encouraged to avoid references to anything in the servlet domain, keeping things solely to our POJOs and annotations. Is there a way to do this without referencing the HttpServletResponse? I.e., keeping ourselves pure?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜