2013-03-04 73 views
3

我想从我的弹簧mvc控制器返回JSONArray对象。但是我在浏览器上收到了406错误。这是一个Ajax请求,我使用jquery来提出请求。Spring MVC无法返回JSONArray对象错误406

春控制器的方法:

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

我在春天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

回答

0

406意味着您的请求没有包含与响应中匹配的接受标头。这来自于W3

该请求所标识的资源只能能够产生具有根据在请求中发送的接受报头不能接受 内容特性 响应实体。

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

+1

我已验证。它的头部有application/json。正如我所说的,当我使用JSONArray或JSONObject时,我正面临着这个问题。任何其他对象工作正常。谢谢 – webdev 2013-03-04 22:40:00

+0

你验证过产生的JSON是否正确?尝试通过其中一个在线JSON验证器发送它。我个人使用JSONlint:http://jsonlint.com/ – CodeChimp 2013-03-05 14:03:05

相关问题