今天在调试springMVC的时候,在将一个对象返回为json串的时候,浏览器中出现异常:

The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ().

从网上查了下,说是让配置下json转化bean:

  1. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  2. <property name="messageConverters">
  3. <list>
  4. <ref bean="mappingJacksonHttpMessageConverter" />
  5. </list>
  6. </property>
  7. </bean>
  8. <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  9. <property name="supportedMediaTypes">
  10. <list>
  11. <value>application/json;charset=UTF-8</value>
  12. </list>
  13. </property>
  14. </bean>

配置完运行后还是报上述错误。
应该不是配置原因,从http://forum.spring.io/forum/spring-projects/web/82137-spring-3-and-ajax这个网址中查出以下配置:

  1. <bean id="messageAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  2. <property name="messageConverters">
  3. <list>
  4. <!-- Support JSON -->
  5. <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
  6. </list>
  7. </property>
  8. </bean>
  9. <bean id="exceptionMessageAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
  10. <property name="messageConverters">
  11. <list>
  12. <!-- Support JSON -->
  13. <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
  14. </list>
  15. </property>
  16. </bean>

其中第一个和之前的配置没有什么差别,但是第二个exceptionMessageAdapter,这个是处理转化json异常的适配器(这个配置对于调试查找问题还是非常有用的)。

当用这个配置替换上面的配置时,浏览器报了如下异常:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

经查,在http://blog.csdn.net/xplizm/article/details/8205882这篇博文中,提到出现这个问题的原因是因为,@ResponseBody返回的对象中的属性缺少set\get方法。
将返回对象加上set\get方法后,一切ok。

这是xplizm的博文中的总结:

开始总以为是Content-Type或者Accept属性有问题,但找了半天原因才发现这里有个基本的要求:POJO对象要转成Json,则要求POJO中的属性必须都有getter方法,加上getter方法后就正常了 :)

ps:

1.当最后调试正确后,我把上述的配置都注释掉,并加上下面这两个配置:

<context:annotation-config />  
    <mvc:annotation-driven />

发现也可以正常使用。这说明,可以使用上面的两个简单说明就可以使用springMVC的@ResponseBody注解,并返回json串。

2. 调试配置也是很重要的,调试时报出的异常要比tomcat直接返回的406码要直接的多,更近的接近真相

最新文章

  1. SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决
  2. 【转】Linux 文件夹文件创建与删除
  3. C#常见控件命名规则举例
  4. codeforces 192b
  5. php图片上传
  6. JQuery 的基本命令
  7. TCP/IP笔记 二.网络层(2)——ICMP,RIP,OSPF,BGP
  8. WPF换肤之一:创建圆角窗体
  9. 阿里云Linux服务器挂载硬盘分区
  10. 数值选择器(NumberPicker)的功能与用法
  11. [APIO2017]商旅(floyd+分数规划+SPFA)
  12. Linux之文本编辑器Vim
  13. Vue2 学习笔记1
  14. 微服务之:从零搭建ocelot网关和consul集群
  15. loj6157 A ^ BProblem (并查集)
  16. JS获取地址栏的参数值
  17. 定时任务redis锁+自定义lambda优化提取冗余代码
  18. 搭建好lamp,部署owncloud。
  19. gdal gdal2tiles.py 的使用
  20. php iconv 函数

热门文章

  1. Python序列切片的注意事项
  2. div设置边框黑框显示
  3. iOS 使用interface builder 创建太复杂的constrains时容易产生crash
  4. [Java基础] SequenceInputStream输入合并流
  5. 原创centos7安装hadoop2.7(转载请注明出处)
  6. 二、JavaScript语言--JS基础--JavaScript入门篇
  7. CentOS下源码安装mplayer播放器
  8. Perl中的正则表达式
  9. HDU 3695 / POJ 3987 Computer Virus on Planet Pandora(AC自动机)(2010 Asia Fuzhou Regional Contest)
  10. 【GruntMate】一个让你更方便使用Grunt的工具