我使用的是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) {...}
有没有人知道为什么使用我的自定义参数解析器将mulitpart文件解析为null而不使用resolveArgument以及我如何解决这个问题呢?
谢谢!
修改
添加参数解析器的配置
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(new MyAnnotationResolver());
}
我的注释定义
@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";