1

我有一个简单的 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 必须在持久上下文中?

我应该如何调查这个问题?

4

1 回答 1

0

我认为这不是您的配置或代码的问题。在 Spring Framework 中,提供了一个名为HiddenHttpMethodFilter的过滤器,它为所有方法提供服务,但最初它将执行 POST 请求,但带有一个隐藏的_method表单字段。此过滤器读取此隐藏字段值,然后相应地更改方法值。请参阅此链接以了解更多信息。我认为使用此过滤器进行配置将解决您的问题。

希望这对您有所帮助。干杯。

于 2012-06-20T05:23:06.683 回答