问题
在Spring MVC应用程序中,单击文件上载按钮时,它遇到以下属性类型转换错误?
无法将[org.springframework.web.multipart.commons.CommonsMultipartFile]类型的属性值转换为属性文件所需的[byte []]类型; 嵌套异常为java.lang.IllegalArgumentException:无法将类型[org.springframework.web.multipart.commons.CommonsMultipartFile]的值转换为属性文件[0]的必需类型[byte]:PropertyEditor [org.springframework.beans.propertyeditors。 [CustomNumberEditor]返回了不合适的值
这是SimpleFormController…
public class FileUploadController extends SimpleFormController{
public FileUploadController(){
setCommandClass(FileUpload.class);
setCommandName("fileUploadForm");
}
//...
public class FileUpload{
byte[] file;
//...
}
解
这是在Spring MVC中处理上载文件时的常见问题,无法将上载文件自动转换为字节数组。 为了使其工作,您必须在SimpleFormController的initBinder()方法中注册一个自定义编辑器( ByteArrayMultipartFileEditor ),以指导Spring将上传的文件转换为字节数组。
public class FileUploadController extends SimpleFormController{
public FileUploadController(){
setCommandClass(FileUpload.class);
setCommandName("fileUploadForm");
}
@Override
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)
throws ServletException {
// Convert multipart object to byte[]
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}
//...
翻译自: https://mkyong.com/spring-mvc/spring-mvc-failed-to-convert-property-value-in-file-upload-form/