当我向我的端点发送PATCH请求时,我收到错误400,看起来像这样
@RequestMapping(value = "...",
method = RequestMethod.PATCH,
consumes = "application/json",
produces = "application/json")
@ResponseBody
public User updateUserPartial(@PathVariable("userId") String userId,
@RequestBody Map<String, Object> userMap,
@RequestBody User user,
HttpServletResponse response) {
...
}
所以基本上userMap和user都应该包含不同结构的相同数据。 如果我省略一个@RequestBody值,这似乎正常工作。 是否有可能同时拥有@RequestBody值?
答案 0 :(得分:5)
你不能使用两个@RequestBody
,因为它只能绑定到一个对象(主体只能被消耗一次)。正如Luke所解释的那样,最简单的方法是创建一个捕获所有相关数据的对象,然后创建参数中的对象。
另一方面,如果您坚持使用自己的方法,可以按照here
的说明创建自定义ArgumentResolver
答案 1 :(得分:3)
我很确定这不会奏效。可能有一种解决方法,但更简单的方法是引入包装器对象并更改签名。
您可以在此处找到有关它的更多信息:Spring MVC controller with multiple @RequestBody