我有一个有些简单化控制器,被配置为这样:的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插入到会话中时犯了一个错误,我只是在此删除它。问题是一样的。