zoukankan      html  css  js  c++  java
  • SpringMVC_The resource identified by this request is only capable of generating responses with characteristics

    今天在调试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:

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    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这个网址中查出以下配置:

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    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返回的对象中的属性缺少setget方法。
    将返回对象加上setget方法后,一切ok。

    这是xplizm的博文中的总结:

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

    ps:

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

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

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

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

  • 相关阅读:
    OpenCV之设计模式
    ca
    BMP结构详解
    Lucas–Kanade光流算法学习
    卡尔曼
    hash+链表
    文件操作
    查找
    fseek效率
    大家都说3C直连网络,3C网络是指什么呢?
  • 原文地址:https://www.cnblogs.com/gisblogs/p/4579062.html
Copyright © 2011-2022 走看看