2014-02-10 47 views
2

我通過ajax向控制器請求數據,但它不能將json對象轉換爲java對象。我使用傑克遜2.2.3和Spring 4.0.0。你能幫我找出我做錯了什麼嗎?謝謝。 epscms-servlet.xml中的ajax請求的Spring MVC

部分:

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> 
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
      <property name= "messageConverters" > 
      <list> 
       <ref bean="jacksonMessageConverter" /> 
      </list> 
     </property> 
</bean> 

AJAX請求:

var data = { 
     orderId:1, 
     parentId:0, 
     className:"test", 
     newsType:1 
    }; 
$.ajax({ 
    url : "${pageContext.request.contextPath}/classification/add/batch", 
    type : "POST", 
    data : data, 
    dataType: "json", 
     contentType: 'application/json', 
    success : function(data) { 
     alert("success"); 
    }, 
    error : function(data, status){ 
     alert(data + status); 
    } 
} 
); 

控制器:

@RequestMapping(value="/add/batch", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE) 

public String batchAdd(@RequestBody Classification c){ 

    return "failure"; 
} 

Classification.java

public class Classification { 
    private int orderId; 
    private String className; 
    private int parentId; 
    private int newsType; 
    //getters and setters.. 
} 

如果我改變控制器方法

public String batchAdd(@RequestBody String cla){ 

     return "failure"; 
    } 

它做工精細,而且我可以得到JSON字符串。有沒有其他人遇到過這個問題?

回答

1

您可能需要JSON.stringify()發佈到終點之前,你的數據:

... 
type : "POST", 
data : JSON.stringify(data), 
dataType: "json", 
... 

下面是一些字符串化additional info。根據您需要支持哪些瀏覽器,您可能還需要read this

+0

謝謝Matt。事實上,我以前嘗試過,但沒有工作。最後我用'com.fasterxml.jackson.databind.ObjectMapper'自己映射了json數據。 – Tilney