2013-01-10 8 views
5

In meinem JSP habe ich eine html:file wie folgt, und in der Form habe ich die Getter und Setter. aber beim Laufen bekam ich

<html:file> Datei hochladen Fehler, -argument Typ Mismatch-

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> 

den Fehler immer nur dann, wenn die Seite einreichen, und ich bin das Hochladen von nichts. (Das Upload-Feld ist kein erforderliches Feld.)

Antwort

8

Es scheint ein Problem mit der Codierung zu sein, das struts-Formular erkennt den submit nicht als Dateityp, stellen Sie sicher, dass das enctype-Attribut des Formulars auf gesetzt ist Methode wie post.

So sollten Sie haben:

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

Beachten Sie, dass diese vermasseln könnte Dinge mit Ihrem Validierung. Siehe this Thread für mehr.

+0

nach einer lil Suche i _Verwendung 'multipart/form-data' sah, wann immer Sie haben ein _ so denke ich, es ist nicht nur In Struts, –

+0

sollte es . Ich bin sicher, es ist ein Tippfehler :) – Cybermonk

0

fügen Sie diese zu einem Projekt Abhängigkeiten:

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