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("[email protected] " + 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="[email protected]";  
  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.     });  


發佈了11 篇原創文章 · 獲贊 6 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章