繁体   English   中英

为Spring RequestBody覆盖HttpMessageConverter

[英]Override HttpMessageConverter for Spring RequestBody

我有以下代码:

@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方法主体被调用时将其完全填充?

提前致谢。

这是不平凡的。

一个HttpMessageConverter已经提供反序列化JSON,这就是MappingJackson2HttpMessageConverter 它有权访问请求标头。 您可以扩展该类,使其还使用标头进行反序列化(这相对于MobileDeviceData ,通常很难做到)。

您可以使用Spring AOP,拦截方法, 检索参数 ,转换为适当的类型并自行分配值。

我想要的解决方案是最简单的:自己在handler方法中完成。 循环List并使用相应的setter为每个MobileDeviceData设置specialCode

另一种选择是专门针对需要从标头值构造的List<MobileDeviceData>参数定义自己的HandlerMethodArgumentResolver

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM