覆盖Spring RequestBody

时间:2015-11-06 21:51:07

标签: java spring spring-mvc spring-boot

我有以下代码:

@RequestMapping(value="/mobile/device", method = RequestMethod.PUT)
public ResponseEntity<Void> flagDevice (@RequestBody List<MobileDeviceData> devicedataList, @RequestHeader(value="special_code") String specialCode) {
// Implementation details
}

创建的每个MobileDeviceData实例都需要使用RequestHeader special_code填充param字段。

我将如何进行此操作,以便在调用flagDevice方法体时完全填充它?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这不重要。

已经提供了HttpMessageConverter来反序列化JSON,即MappingJackson2HttpMessageConverter。它可以访问请求标头。您可以扩展该类以使用标头进行反序列化(这通常非常难以执行,而不是仅针对MobileDeviceData)。

您可以使用Spring AOP,拦截方法retrieve the arguments,强制转换为适当的类型,并自行分配值。

我想要的解决方案是最简单的:在处理程序方法中自己动手。循环List并使用相应的设置器为每个specialCode设置MobileDeviceData

另一种选择是专门为HandlerMethodArgumentResolver参数定义您自己的List<MobileDeviceData>,这些参数需要从标题值构建。