带有ajax请求的Spring MVC

时间:2014-02-10 08:20:12

标签: ajax spring-mvc jackson

我通过ajax从控制器请求数据,但它无法将json对象转换为java对象。我正在使用jackson 2.2.3和Spring 4.0.0。你能帮我找出我做错的地方吗?感谢。

epscms-servlet.xml的一部分:

<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 个答案:

答案 0 :(得分:1)

您可能需要在将数据发布到端点之前使用JSON.stringify():

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

这是stringify上的一些additional info。根据您需要支持的浏览器,您可能还需要read this