我有一個有些簡單化控制器,被配置爲這樣:的ModelAttribute不映射應用程序/ x-WWW窗體-urlencoded
@RequestMapping(value = "user/savearticle", method = RequestMethod.POST)
public @ResponseBody
Object saveArticle(@ModelAttribute("article")RawArticle rawArticle);
使用從here截取的代碼片段,我用於控制器看起來做了一個試驗的情況下像這樣:
MvcResult resultActions =
mockMvc.perform(MockMvcRequestBuilders.post("/user/savearticle")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.content(convertObjectToForumUrlEncodedBytes(rawArticle)))
.andReturn();
我只是打印出結果。在任何情況下,的ModelAttribute「rawArticle」不斷最終成爲空當它進入控制器的實現,但是當我用這個:
MvcResult resultActions = mockMvc.perform(
MockMvcRequestBuilders.post("/user/savearticle")
.param("title", rawArticle.getTitle())
.param("tags", rawArticle.getTags())
.param("body", rawArticle.getBody())
.param("author", rawArticle.getAuthor())).andReturn();
的映射實際上就像一個魅力。我想要的是,第一個測試正確處理,因爲它似乎是錯誤的,它沒有被映射,我認爲它應該是類似的控制器主要是由另一個程序通過網絡使用Apache HTTP(它自動通過urlencoded形式)。
你們有什麼想法我可以犯一個錯誤嗎?我不會介意張貼我的上下文配置的片段,如果你認爲你需要它來評估問題(或我爲此事POM,只是告訴我,我可能已經錯過了什麼庫應該是足夠了)
更新: 我在測試編號1中將POJO插入到會話中時犯了一個錯誤,我只是在此刪除它。問題是一樣的。