Spring SpringMVC文件上传错误(二)
2016-05-06 16:38
841 查看
续上文,
简述一下:表单请求的两种方式
同步提交
异步提交
笔者之前写过的测试Demo:
笔者忽略了,在同步提交的时候,Spring把空上传是做null来处理的,而在异步提交的时候,Spring把文件域的值当作空字符串看待的。在Spring做请求转换的时候(
这个类跟下去,就会发现差异。
然后在list下的bean节点的class属性的路径下创建一个
注:注意在引入上面配置文件的时候不要忘记引入其定义及约束文件。
场景:
不上传文件提交表单。简述一下:表单请求的两种方式
同步提交
异步提交
笔者之前写过的测试Demo:
HTML:
<form action="upload.do" method="post" enctype="multipart/form-data"> <input type="file" name="fileName" /> <input type="submit" value="Submit" /> </form>
控制器:
@RequestMapping(value = "/upload.do", method = RequestMethod.POST) @ResponseBody public Map<String, Object> add(@RequestParam(value="fileName") MultipartFile file){ //... return null; }
错误信息:
11:03:07.147 [http-nio-8080-exec-4] DEBUG o.s.w.s.m.a.AnnotationMethodHandlerExceptionResolver - Resolving exception from handler [com.xFee.serverAdmin.controller.ApkInfoController@25a5db]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found 11:03:07.147 [http-nio-8080-exec-4] DEBUG o.s.w.s.m.a.ResponseStatusExceptionResolver - Resolving exception from handler [com.xFee.serverAdmin.controller.ApkInfoController@25a5db]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found 11:03:07.147 [http-nio-8080-exec-4] DEBUG o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolving exception from handler [com.xFee.serverAdmin.controller.ApkInfoController@25a5db]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found 11:03:07.147 [http-nio-8080-exec-4] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'springServlet': assuming HandlerAdapter completed request handling 11:03:07.147 [http-nio-8080-exec-4] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
笔者忽略了,在同步提交的时候,Spring把空上传是做null来处理的,而在异步提交的时候,Spring把文件域的值当作空字符串看待的。在Spring做请求转换的时候(
request–>
MultipartHttpServletRequest)底层的
TypeConverter接口实现对
null和
""是做了不同操作的。源码就不贴了,有兴趣的伙伴可以自行从:
org.springframework.web.multipart.commons.CommonsMultipartResolver
这个类跟下去,就会发现差异。
解决方案
在配置文件中加入以下配置:<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.xFee.serverAdmin.utils.SpringMVCFileConverter"></bean> </list> </property> </bean> <mvc:annotation-driven conversion-service="conversionService" />
然后在list下的bean节点的class属性的路径下创建一个
SpringMVCFileConverter:
public class SpringMVCFileConverter implements Converter<String, MultipartFile> { public SpringMVCFileConverter() { super(); } @Override public MultipartFile convert(String source) { return null; } }
注:注意在引入上面配置文件的时候不要忘记引入其定义及约束文件。
学生浅薄,望众师指点 wengang.liu 编辑于:2016/5/6 17:18:07
相关文章推荐
- java中Comparator比较器的使用
- Java 基础知识(一)之基础概念
- Java 反射机制
- java enum详解
- spring集成jms用法
- Java学习之输入+文本输出
- Spring面试,IoC和AOP的理解
- eclipse快捷键大全
- 蓝桥杯 分机号 第六届JavaB组决赛第一题
- java集合07--Stack源码解读
- java保留4位小数
- Hibernate Validation各注解的用法Demo
- struts2的配置学习
- Java中Annotation的介绍
- 解决eclipse中使用log4j2在控制台输出无法显示颜色
- Java中finalize关键字的使用
- 【SSH】MyEclipse卸载干净的方法
- 推荐几个优秀的java爬虫项目
- Google Java编程风格指南
- 了解java回调方法