手頭一個EXTJS+SpringMVC的項目,用FormPanel提交表單到後台進行更新/添加操作,想著趕一把時髦用@RequestBody吧,結果死活報http415錯誤,折騰了2天幾乎都要放棄了,但是實在眼饞這個強悍的功能,經過反復測試終於搞定。
網上種種解決方式,包括補充<mvc:annotation-driven />的配置、JavaBean要有無參構造函數、缺Jackson包等等,經檢查都不是原因所在(Spring 3.1之後<mvc:annotation-driven/>默認就會載入7種MessageConventer無需多余聲明),最後發現問題主要由2個方面造成:
1.Ajax請求時沒有設置Content-Type為Json,對於ext來說就是要把POST的內容放到jsonData屬性中,而不是params。
2.發送的表單內容對象不要轉成JSON字符串,直接發送JSON對象即可,否則就415錯誤!