我有一个简单的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})之间的区别,听起来像是这个问题 –