It's not a Struts bug, and it's not even a Struts-related problem. Any time
you need to upload files, you must use a POST request with an 'enctype' of
"multipart/form-data". Your form element should look like this:
<html:form action="/imageUpload.do" type="imageUploadForm"
enctype="multipart/form-data">
--
Martin Cooper
"Bryan Hunt" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
Hi there list,
I have been trying to get the most simple file upload example working with
and have been receiving a strange error message that I just can't seem
to shake.
Here is the basics of my action form
snip=
public class ImageUploadForm extends ActionForm {
// ---------------------------------------------------------
Instance Variables
/** imageFile property */
protected FormFile file;
// --------------------------------------------------------- Methods
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
if(file == null){
System.out.println("file is empty");
}
return null;
}
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
=snip
Here is the basics of the action
snip=
public ActionForward execute(
blah) {
System.out.println("at least i managed to get called");
throw new UnsupportedOperationException("Generated method
'execute(...)' not implemented.");
}
=snip
Here is the basics from my struts config file
snip=
<form-bean name="imageUploadForm"
type="ie.jestate.struts.form.ImageUploadForm">
<form-property name="file"
type="org.apache.struts.upload.FormFile" />
</form-bean>
<action
attribute="imageUploadForm"
input="/form/imageUpload.jsp"
name="imageUploadForm"
path="/imageUpload"
type="ie.jestate.struts.action.ImageUploadAction"
scope="request"
validate="true"
>
<forward name="imageuploadsuccess"
path="/form/imageUpload.jsp" />
</action>
=snip
Here is the jsp file
snip=
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<html>
<head>
<title>JSP for imageUploadForm form</title>
</head>
<body>
<DEFANGED_html:form action="/imageUpload.do"
type="imageUploadForm" >
File :
<DEFANGED_html:file property="file"/>
<DEFANGED_html:submit/>
</DEFANGED_html:form>
<body>
</html>
=snip
And here is the abreviated version of the error message
snip=
*exception*
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
ava:821)*
cause mère*
java.lang.IllegalArgumentException: argument type mismatch
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
=snip
I have tried changing the type to text and the type to String in
the form and that works but use this FormFile class and everything
seems to go fubar.
It never even gets to call the action , instead it generates this error
message ,
but the setters and getters are right and the variable is public, this
only happens
with the FormFile. All the struts stuff is in my classpath as is
commons-fileupload-1.0.jar.
Anyone got any idea what the hell I'm doing wrong ... I'm starting to
suspect this
could be a struts bug cause everything looks straightforward enough.
--B
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]