Spring MVC无法返回JSONArray对象错误406

时间:2013-03-04 20:06:29

标签: ajax json spring-mvc

我试图从我的spring mvc控制器返回JSONArray对象。但我在浏览器上遇到406错误。这是一个ajax请求,我使用jquery来发出请求。

Spring控制器方法:

@RequestMapping("/getAuthorizedScreensForUser.do")  
public @ResponseBody JSONArray getAuthorizedScreensForUser(HttpSession session){  
    UserAuthDetails userAuthDetails = (UserAuthDetails) session.getAttribute("userauthdetails");  
   //This method returns JSONArray  
    return webUtilsService.getJSONArrayResponseForAuthorizedScreens(userAuthDetails.getScrnfldacss());   
}  

我在spring-context.xml中尝试了这两个条目

    <mvc:annotation-driven>  
        <mvc:message-converters>  
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
                <property name="prefixJson" value="true"/>  
            </bean>  
        </mvc:message-converters>  
    </mvc:annotation-driven>  

<mvc:annotation-driven/>  

我的pom.xml有这些依赖项:

<dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-core-asl</artifactId>  
            <version>1.9.12</version>  
        </dependency>  

        <dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-asl</artifactId>  
            <version>1.9.12</version>  
        </dependency>  

我正在运行WAS 8.不确定是什么问题。我能够以json格式返回简单对象,但不能返回JSONArray对象。如果我做错了什么,请告诉我。

我知道有很多现有的线程有相同的讨论。但我没有找到任何有JSONArray对象示例的人。 Pawan Chopra

1 个答案:

答案 0 :(得分:0)

A 406表示您的请求未包含与响应中的接头相匹配的接受标头。这来自W3

  

请求标识的资源只能生成   具有不可接受的内容特征的响应实体   根据请求中发送的接受标头。

我会从查看请求开始。确保它在请求的标题中有“application / json”。然后,确保将响应的Content-Type设置为相同。