Spring mvc使用注解@ResponseBody Ajax请求返回json报406错误
2016-09-17 20:45
706 查看
之前做的项目依赖jar包jackson-core,jackson--mapper,xml配置<mvc:annotation-driven>就可以轻松使用ResponseBody返回json数据到前台页面。
现在新接手的项目在传json数据时遇到一个很棘手的问题,这个项目用的包是jackson-annotations,jackson-databind,jackson-mapper,前台页面获取数据时报406错误。jar包换回我原来的也不行。
还有网上的各种方法也试过
包括@RequestMapping设置produces = {"application/json;charset=UTF-8"},
和配置
<span style="white-space:pre"> </span><mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>还是无济于事。
jackson的依赖包不缺,xml配置正常,ajax 也没有问题,controller也能正常访问,spring版本是3.2也不存在网上所说的版本冲突,这真是一个谜。
折腾了一个下午,终于找到了解决的方法:
@ResponseBody
@RequestMapping(value = "/information.jspx", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
public String strategypost(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model modelMap,
@RequestParam(defaultValue="1")int pageNum,
@RequestParam(defaultValue="10")int pageSize) {
Site site = Context.getCurrentSite(request);
Map<String, Object> data = modelMap.asMap();
ForeContext.setData(data, request);
try {
Page<Information> page = informationService.findPage(pageNum,pageSize);
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> pageMap = new HashMap<String, Object>();
pageMap.put("page", page);
String json = mapper.writeValueAsString(pageMap);
return json;
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
$.ajax({
type:'POST',
url:'/information.jspx',
dataType:'json',
data:{'pageNum':pageIndex+1,'pageSize':${page.pageSize}},
success:function(data){
var result = data.page.result;
$.each(result, function (n, value) {
alert(value.title + ' ' + value.link);
});
}
});
现在新接手的项目在传json数据时遇到一个很棘手的问题,这个项目用的包是jackson-annotations,jackson-databind,jackson-mapper,前台页面获取数据时报406错误。jar包换回我原来的也不行。
还有网上的各种方法也试过
包括@RequestMapping设置produces = {"application/json;charset=UTF-8"},
和配置
<span style="white-space:pre"> </span><mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>还是无济于事。
jackson的依赖包不缺,xml配置正常,ajax 也没有问题,controller也能正常访问,spring版本是3.2也不存在网上所说的版本冲突,这真是一个谜。
折腾了一个下午,终于找到了解决的方法:
@ResponseBody
@RequestMapping(value = "/information.jspx", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
public String strategypost(HttpServletRequest request, HttpServletResponse response,
org.springframework.ui.Model modelMap,
@RequestParam(defaultValue="1")int pageNum,
@RequestParam(defaultValue="10")int pageSize) {
Site site = Context.getCurrentSite(request);
Map<String, Object> data = modelMap.asMap();
ForeContext.setData(data, request);
try {
Page<Information> page = informationService.findPage(pageNum,pageSize);
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> pageMap = new HashMap<String, Object>();
pageMap.put("page", page);
String json = mapper.writeValueAsString(pageMap);
return json;
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
$.ajax({
type:'POST',
url:'/information.jspx',
dataType:'json',
data:{'pageNum':pageIndex+1,'pageSize':${page.pageSize}},
success:function(data){
var result = data.page.result;
$.each(result, function (n, value) {
alert(value.title + ' ' + value.link);
});
}
});
相关文章推荐
- 使用springMVC注解@ResponseBody与jackson工具类在ajax请求中实现对象与json之间的相互转化
- 使用springMVC注解@ResponseBody与jackson工具类在ajax请求中实现对象与json之间的相互转化
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。
- Spring MVC 通过@ResponseBody标签返回JSON数据 报406错误的解决方法
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- Spring MVC 利用 @ResponseBody 注解返回JSON
- Spring 4.x 中使用注解 @ResponseBody 返回json数据的配置
- Spring MVC控制器用@ResponseBody声明返回json数据报406的问题
- spring注解@ResponseBody处理ajax请求,json数据类型
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- Spring MVC使用HttpClient返回json报406错误解决办法
- Spring MVC使用HttpClient返回json报406错误解决办法
- 实现SpringMVC中使用@Responsebody注解返回任意POJO对象转换成JSON
- spring MVC 3.1 注解:@ResponseBody 返回json数据
- SpringMVC @ResponseBody注解 json转换 返回406
- spring MVC 3.1 注解:@ResponseBody 返回json数据