如何解决spring mvc mapping问题?

时间:2012-06-19 16:17:07

标签: spring mapping pojo

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

我该如何调查此问题?

1 个答案:

答案 0 :(得分:0)

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

希望这会对你有所帮助。欢呼声。