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字符串。有没有其他人遇到过这个问题?
谢谢Matt。事实上,我以前尝试过,但没有工作。最后我用'com.fasterxml.jackson.databind.ObjectMapper'自己映射了json数据。 – Tilney