2013-01-10 25 views
5

在我的JSP中,我有一個html:file這樣,並在窗體我有getter和setter。但在運行時,我得到了

<html:file>上傳文件錯誤,-argument型錯配

Caused by: java.lang.IllegalArgumentException: Cannot invoke com.app.app.struts.forms.MyForm.setDocfile on bean class 'class com.app.app.struts.forms.MyForm' 
    - argument type mismatch - had objects of type "java.lang.String" but expected signature "org.apache.struts.upload.FormFile" 

的jsp:

<html:file property="docfile" styleId="docfile" size="45" ></html:file> 

只提交頁面,我不會上傳任何東西時發現了錯誤。 (上傳字段不是必填字段)

回答

8

它似乎是編碼問題,struts表單不能識別提交作爲文件類型,請確保將表單的enctype屬性設置爲multipart/form-data,並且方法爲post

所以,你應該有:

<html:form action="/somePath" enctype="multipart/form-data" method="post"></html:form> 

請注意,這可能會搞糟的事情與您的驗證。有關更多信息,請參閱this線程。

+0

一律搜索只見_USE'多部分/形式data'後,只要你有一個 _,所以我認爲它不僅在struts中, –

+0

它應該是。我確定這是一個錯字:) – Cybermonk

0

添加此依賴關係到項目:

<dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.2.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>1.4</version> 
    </dependency>