我有一个简单的Spring程序,后端是带有Restful Web服务的Spring MVC,前端是纯HTML + ajax。
我的问题是,当我尝试使用以下内容将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必须在持久化的上下文中?
我该如何调查此问题?
答案 0 :(得分:0)
我认为这不是您的配置或代码的问题。 在Spring Framework中,提供了一个名为 HiddenHttpMethodFilter 的过滤器,它提供了所有方法,但最初它将执行POST请求但具有隐藏的 _method 表单字段。此过滤器读取此隐藏字段值,然后相应地更改方法值。请参考this link以了解更多相关信息。我认为使用此过滤器进行配置可以解决您的问题。
希望这会对你有所帮助。欢呼声。