好吧,我已经在 SO 中解决了有关此主题的大部分问题,但无法解决此问题。
我的问题是,每当我在下面的控制器方法中使用 @RequestBody 注释时,ajax 调用永远不会调用此方法,但是如果我删除 @RequestBody 注释,则控件会出现在方法中,但联系人对象的值为空:Why the serialized form没有绑定到对象?并收到错误:客户端发送的请求在语法上不正确
控制器:
@RequestMapping(value="/addContacts.htm", method = RequestMethod.POST, headers = {"content-type=application/json"})
@ResponseBody
public String addContacts(@RequestBody Contact contact, HttpServletRequest request ) {
return "success";
}
阿贾克斯调用:
$("#add_more_contact").click(function(){
var formJson = $("#addContactForm").serialize();
$.ajax( {
url : "/myproject/admin/addContacts.htm",
type : "POST",
data : formJson,
dataType : "text",
contentType : "application/json",
success : function(data) {
alert('Success - '+data);
},
error : function(xhr, desc, err) {
alert("Desc: " + desc + "\nErr:" + err);
}
});
});
ajax 请求中的 POST 数据:这 4 个变量存在于我的联系人对象中。
firstName=bill&lastName=gates&email=&mobileNumber=
项目-servlet.xml:
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter" />
</list>
</property>
</bean>
<mvc:annotation-driven/>
使用杰克逊罐:jackson-all-1.9.9.jar
不知道我错过了什么?任何帮助将不胜感激。