简体   繁体   English

@RequestParam的Spring转换器

[英]Spring Converters for @RequestParam

I want to have InputStream of form field in my Controller, wheter @RequestParam is String or MultipartFile. 我想在我的控制器中使用表单字段的InputStream,而@RequestParam是String还是MultipartFile。 Do anyone know how to properly register converter. 有谁知道如何正确注册转换器。 What i want achive looks like this 我想要达到的目标是这样的

@RequestMapping(value = "/test", method = RequestMethod.POST)
void sendData(@RequestParam("data") InputStream){
   // Deal with InputStream
}

I have written two converters, but i'm not sure how to register them in spring boot and force them to work: 我已经编写了两个转换器,但是我不确定如何在spring boot中注册它们并强制它们工作:

public class StringToStreamConverter implements Converter<String, InputStream> {

   @Override
   public InputStream convert(String source) {
     return new ByteArrayInputStream(source.getBytes());
   }
}


public class MultipartFileToStreamConverter 
   implements Converter<MultipartFile, InputStream> {

   @Override
   public InputStream convert(MultipartFile source) {
     return source.getInputStream();
   }
}

I have found somepart solution. 我找到了解决方案。

If config class extends WebMvcConfigurationSupport i can override method public FormattingConversionService mvcConversionService() where i can add my converters and it just works. 如果配置类扩展了WebMvcConfigurationSupport我可以覆盖方法public FormattingConversionService mvcConversionService() ,在其中可以添加我的转换器,并且它可以正常工作。

@Configuration
public class TestConfig extends WebMvcConfigurationSupport {
   @Override
   public FormattingConversionService mvcConversionService() {
       FormattingConversionService f = super.mvcConversionService();
       f.addConverter(new StringToStreamConverter());
       f.addConverter(new MultipartFileToStreamConverter());
       return f;
   }
}

I wonder if anyone has better solution. 我想知道是否有人有更好的解决方案。

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

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