SOでこのトピックに関するほとんどの質問をしましたが、この問題を修正できませんでした。
私の質問は、以下のコントローラーメソッド内で @RequestBody アノテーションを使用しているときはいつでも、ajax 呼び出しがこのメソッドを呼び出すことはありませんが、@RequestBody アノテーションを削除すると、コントロールはメソッドに含まれますが、連絡先オブジェクトの値が null になります:なぜシリアライズされたフォームなのかオブジェクトにバインドされていませんか?エラーが発生しました:クライアントから送信されたリクエストは構文的に正しくありませんでした
コントローラ:
@RequestMapping(value="/addContacts.htm", method = RequestMethod.POST, headers = {"content-type=application/json"})
@ResponseBody
public String addContacts(@RequestBody Contact contact, HttpServletRequest request ) {
return "success";
}
ajax 呼び出し:
$("#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 つの変数は私の Contact オブジェクトに存在します。
firstName=bill&lastName=gates&email=&mobileNumber=
プロジェクトサーブレット.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 jar の使用: jackson-all-1.9.9.jar
何が欠けているのかわからない??どんな助けでも大歓迎です。