我有以下代码:
@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方法体时完全填充它?
提前致谢。
答案 0 :(得分:0)
这不重要。
已经提供了HttpMessageConverter
来反序列化JSON,即MappingJackson2HttpMessageConverter
。它可以访问请求标头。您可以扩展该类以使用标头进行反序列化(这通常非常难以执行,而不是仅针对MobileDeviceData
)。
您可以使用Spring AOP,拦截方法retrieve the arguments,强制转换为适当的类型,并自行分配值。
我想要的解决方案是最简单的:在处理程序方法中自己动手。循环List
并使用相应的设置器为每个specialCode
设置MobileDeviceData
。
另一种选择是专门为HandlerMethodArgumentResolver
参数定义您自己的List<MobileDeviceData>
,这些参数需要从标题值构建。