我有一個簡單的Spring程序,後端是Spring MVC和Restful web服務,前端是純HTML + ajax。如何排查spring mvc映射問題?
我的問題是,當我嘗試使用下面的HTTP請求參數映射到一個POJO,它總是失敗:
@RequestMapping(value = "/books", method = RequestMethod.PUT)
public @ResponseBody
String updateBook(BookInfo book)
這裏我使用PUT方法,因爲它是一個修改操作。沒有例外,但我沒有注入書本對象。
用相同的HTTP請求參數,如果我改變了方法POST,和客戶端通過POST發送,這將是成功的:
@RequestMapping(value = "/books", method = RequestMethod.POST)
public ResponseEntity<String> addBook(BookInfo book)
這次本書總是會得到填補。
爲什麼PUT和POST有區別?或者它是返回類型的問題? (一個是ResponseBody,另一個是ResponseEntity)?或者,如果您使用PUT,那麼pojo必須處於持久性上下文中?
我該如何調查該問題?
嗨,感謝您的技巧。我會試一試並反饋。 –
不客氣。我很確定這會解決你的問題。但我建議你一次通過我提供的鏈接。 :-) –
結果是一個真正的映射問題,在客戶端,我應該使用dojo.xhrPut({url:'path/to/resource',putData:data,headers:{...「application/json 「},並且在服務器端,我應該在映射的bean之前添加@requestBody,以確保spring從url以外的請求主體進行映射。完成這個更改後,PUT方法可以工作。但是,我仍在研究什麼是dojo.xhrPut({putData:data})和dojo.xhrPut({content:data})之間的區別,聽起來像是這個問題 –