SpringMvc 中@ResponseBody设置produces="application/json;charset=UTF-8"报HTTP 406错误,请看补充? 10
java@RequestMapping(value="/load",method=RequestMethod.GET,produces="text/html;charse...
java
@RequestMapping(value = "/load",method = RequestMethod.GET, produces = "text/html;charset=UTF-8" /*produces="application/json;charset=UTF-8"*/)
@ResponseBody
public String methodA(HttpServletRequest request, Dto params) {}
方法A是异步请求并返回json串的,由于在返回的json串存在中文,不加produces会中文乱码。所以我加了produces="application/json;charset=UTF-8",意思 是生产json数据并设置编码格式,但经过浏览器请求后,发现http 406错误。
试了很久,把produces改为“text/html;charset=UTF-8”就能正常进入方法并没乱码。
不太明白,我返回的是json,为什么不能设置成application/json,而为设置成text/html?
请大神说下,谢谢。 展开
@RequestMapping(value = "/load",method = RequestMethod.GET, produces = "text/html;charset=UTF-8" /*produces="application/json;charset=UTF-8"*/)
@ResponseBody
public String methodA(HttpServletRequest request, Dto params) {}
方法A是异步请求并返回json串的,由于在返回的json串存在中文,不加produces会中文乱码。所以我加了produces="application/json;charset=UTF-8",意思 是生产json数据并设置编码格式,但经过浏览器请求后,发现http 406错误。
试了很久,把produces改为“text/html;charset=UTF-8”就能正常进入方法并没乱码。
不太明白,我返回的是json,为什么不能设置成application/json,而为设置成text/html?
请大神说下,谢谢。 展开
1个回答
展开全部
因为返回类型String,即使你添加了@ResponseBody,springmvc使用的是这个类org.springframework.http.converter.StringHttpMessageConverter
如果你返回类型的对象,并且添加了@ResponseBody,springmvc使用的是这个类org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
所以这个时候你不可以把produces改为"application/json;charset=UTF-8"
应该设置为"text/html;charset=UTF-8"或者"text/plain;charset=UTF-8"
如果你返回类型的对象,并且添加了@ResponseBody,springmvc使用的是这个类org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
所以这个时候你不可以把produces改为"application/json;charset=UTF-8"
应该设置为"text/html;charset=UTF-8"或者"text/plain;charset=UTF-8"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询