Spring MVCはファイルアップロードフォームのプロパティ値を変換できませんでした.
問題
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でアップロードされたファイルを処理する際の一般的な問題です。それを動作させるには、Springがアップロードされたファイルをバイト配列に変換するように案内するために、SimpleFormControllerの
initBinder()
メソッドにカスタムエディタ(
ByteArrayMultipartFileEditor
)を登録する必要があります。
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()); } //...
file upload
リンク://tag/spring-mvc/[spring mvc]