Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring自定义注释解算器MulitpartFile解析为Null_Spring_Spring Mvc_File Upload_Spring Boot_Annotations - Fatal编程技术网

Spring自定义注释解算器MulitpartFile解析为Null

Spring自定义注释解算器MulitpartFile解析为Null,spring,spring-mvc,file-upload,spring-boot,annotations,Spring,Spring Mvc,File Upload,Spring Boot,Annotations,我使用了一个Spring自定义注释,而不是@requestParam public Response uploadImages(@myResolver(value = "imageFile", required = true) final MultipartFile multiPartFile) {...} 但是,mulitpart文件参数被解析为null。因此,我在HandlerMethodArgumentResolver.resolveArgument中放置了一个断点,以查看是否正在解析该

我使用了一个Spring自定义注释,而不是
@requestParam

public Response uploadImages(@myResolver(value = "imageFile", required = true) final MultipartFile multiPartFile) {...}
但是,mulitpart文件参数被解析为null。因此,我在HandlerMethodArgumentResolver.resolveArgument中放置了一个断点,以查看是否正在解析该参数,但从未到达断点。但我知道我的自定义注释适用于其他参数,如String、long e.t.c

当我尝试改用
@requestParam
时,它工作正常,并且多部分文件已解析

public Response uploadImages(@requestParam(value = "imageFile", required = true) final MultipartFile multiPartFile) {...}
有人知道为什么使用自定义参数解析器而不使用resolveArgument将mulitpart文件解析为null,以及我如何解决这个问题吗

谢谢

编辑

用于添加参数解析程序的配置

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
  super.addArgumentResolvers(argumentResolvers);
  argumentResolvers.add(new MyAnnotationResolver());
}

向我们展示您的自定义注释定义以及相关配置自定义注释的原因是什么?您基本上用自己的单个注释替换了Spring的所有优秀特性。您可能需要检查
@RequestParam
的处理程序以及
MultipartFile
在那里的处理方式。我使用自定义注释使用错误响应模板引发自己的异常,而不是在缺少参数时spring引发自己的异常如果这是您唯一想要的,创建一个异常转换器,而不是替换spring为您所做的所有绑定和转换。
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Component
public @interface MyResolver{

  String value() default "";
  boolean required() default true;
  String defaultValue() default ValueConstants.DEFAULT_NONE;
  String errorCode() default "40000";