我有以下代码:
@RequestMapping(value="/mobile/device", method = RequestMethod.PUT)
public ResponseEntity<Void> flagDevice (@RequestBody List<MobileDeviceData> devicedataList, @RequestHeader(value="special_code") String specialCode) {
// Implementation details
}
创建的MobileDeviceData的每个实例都需要有一个param字段,其中填充RequestHeaderspecial_code。
我该如何进行此操作,以便在调用flagDevice方法体时将其完全填充?
提前谢谢。
这不是小事。
已经提供了一个反序列化JSON的HttpMessageConverter
,即MappingJackson2HttpMessageConverter
。它可以访问请求标头。您可以扩展该类以也使用头进行反序列化(这在一般情况下非常困难,而不是仅用于MobileDeviceData
)。
您可以使用SpringAOP,截取方法,检索参数,转换为适当的类型,并自己分配值。
我想要的解决方案是最简单的:在handler方法中自己完成。循环List
,并使用相应的设置器为每个MobileDeviceData
设置specialCode
。
另一种选择是专门为需要从头值构造的List<MobileDeviceData>
参数定义自己的HandlerMethodArgumentResolver
。