2013-01-10 12 views
5

Nel mio jsp ho un html:file come questo, e nella forma ho getter e setter. ma durante l'esecuzione ho ottenuto

<html:file> errore di caricamento file, mancata corrispondenza di tipo di oggetto-

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> 

ottenere l'errore solo al momento della presentazione della pagina e non sto caricando nulla. (il campo di caricamento non è un file richiesto.)

risposta

8

Sembra che sia un problema con la codifica, il modulo struts non riconosce il submit come un tipo di file, assicurati di impostare l'attributo enctype del modulo su multipart/form-data e metodo come post.

così si dovrebbe avere:

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

essere consapevoli che questo potrebbe rovinare le cose con la vostra convalida. Vedere il thread this per ulteriori informazioni.

+0

dopo una ricerca lil ho visto _Use 'multipart/form-data' ogni volta che si dispone di un _ così penso che la sua non solo nei puntoni, –

+0

dovrebbe essere . Sono sicuro che è un errore di battitura :) – Cybermonk

0

aggiungere questo dipendenze al progetto:

<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>