spring mvc返回json格式疑问@ResponseBody

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

 

经过排查原来是配置文件方式不同引起的:

首先引入

jackson-core-asl-1.6.4.jar

jackson-mapper-asl-1.6.4.jar

如果是:

<mvc:annotation-driven />

那么则没有问题

 

如果把配置换成

 

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

则会报异常。

那么需要补充配置

 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

   <property name="messageConverters">

   <list>

   <ref bean="jsonHttpMessageConverter"/>

   </list>

   </property>

</bean>

<bean id="jsonHttpMessageConverter" 

       class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>



------------------------------------------------------------

Java代码   收藏代码
  1. package com.controller;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import org.springframework.stereotype.Controller;  
  9. import org.springframework.web.bind.annotation.RequestBody;  
  10. import org.springframework.web.bind.annotation.RequestMapping;  
  11. import org.springframework.web.bind.annotation.RequestMethod;  
  12. import org.springframework.web.bind.annotation.ResponseBody;  
  13.   
  14. import com.pojo.Users;  
  15.   
  16. @Controller  
  17. public class JSONController {  
  18.     @RequestMapping(value = "getUserListFromServer", method = RequestMethod.GET)  
  19.     @ResponseBody  
  20.     public Map<String, Object> getUserList() {  
  21.   
  22.         Map<String, Object> modelMap = new HashMap<String, Object>(3);  
  23.         modelMap.put("total""1");  
  24.         modelMap.put("data", getUsers());  
  25.         modelMap.put("success""true");  
  26.         return modelMap;  
  27.     }  
  28.   
  29.     public List<Users> getUsers() {  
  30.   
  31.         List<Users> list = new ArrayList<Users>();  
  32.         for (int i = 0; i < 5; i++) {  
  33.             Users user = null;  
  34.             user = new Users();  
  35.             user.setName("Pandy " + i);  
  36.             user.setPassword("pandy " + i);  
  37.             user.setEmail("panyongzheng@163.com " + i);  
  38.             user.setRemarks("Nothing " + i);  
  39.             user.setId(i);  
  40.             list.add(user);  
  41.         }  
  42.         return list;  
  43.     }  
  44.   
  45.     @RequestMapping(value = "commitToServer", method = RequestMethod.POST)  
  46.     @ResponseBody  
  47.     public Map<String, String> addUser(@RequestBody Users user) {  
  48.         System.out.println(user.getName());  
  49.         Map<String, String> map = new HashMap<String, String>(1);  
  50.         map.put("success""true");  
  51.         return map;  
  52.     }  
  53.   
  54. }  





Js代码   收藏代码
  1. getFromServer = function() {  
  2.     alert("getFromServer");  
  3.     $.ajax({  
  4.         type : "GET",  
  5.         url : "getUserListFromServer.do",  
  6.         data : "name=John&location=Boston",  
  7.         contentType : 'application/json'//这里可以不加上,但是要是提交的是json对象字符串的话,必须加上.  
  8.         dataType : 'json',//这里可以不加上,但是要是提交的是json对象字符串的话,必须加上.  
  9.         success : function(obj) {  
  10.             alert("Data Saved: " + JSON.stringify(obj));  
  11.         },  
  12.         error: function(obj, s1, s2){  
  13.             alert(JSON.stringify(obj));  
  14.         },  
  15.         complete : function(obj, s1){  
  16.             alert("complete:"+s1);  
  17.         }  
  18.     });  
  19. }  
  20. commitToServer = function() {  
  21.     alert("commitToServer");  
  22.     var obj = {};  
  23.     obj.name="Pandy";  
  24.     obj.email="test@163.com";  
  25.     var param = JSON.stringify(obj);  
  26.     alert(param);  
  27.     $.ajax({  
  28.         type : "POST",  
  29.         url : "commitToServer.do",  
  30.         data : param,  
  31.         contentType : 'application/json'//这里必须要加上.  
  32.         dataType : 'json',    
  33.         success : function(obj) {  
  34.             alert(JSON.stringify(obj));  
  35.         },  
  36.         error: function(obj, s1, s2){  
  37.             alert(JSON.stringify(obj));  
  38.         },  
  39.         complete : function(obj, s1){  
  40.             alert("complete:"+s1);  
  41.         }  
  42.     });  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值