You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Mikael Eriksson <mi...@bea.com> on 2001/07/02 00:18:21 UTC

Re: Error - MultipartIterator: no multipart request data sent

Hello

 I noticed the same problem when moving to 1.0. It seems that
the requesthandler notices that the request is a multi-part and
tries to find the multi-part data, even when the request are
already handled and you are only forwarding to the next
action. (I only got the problem when going to another action.)

 The way I handled it was to set redirect="true" in struts-config.xml
for the action that I forwarded to, this made the multi-part info
go away from the request (and all other parameters too of course,
so if you are expecting request parameters in the next action this
will not work.)

 I guess this could be fixed in the code too, maybe by having the request
reader setting a request attribute so that it knows the next time
that it already has gotten the data. But I did not go deep enough
into the code to know if that is feasible or not.

 Regards
 Mikael


nuray.baskal@ubs.com wrote:

> Hi everbody,
>
> I am writing a program that needs to process form data. I have an uploadForm
> (that is an insatance of org.apache.struts.action.ActionForm). I have no
> problem with uploading a file via this form. After uploading the file, I am
> executing a couple of procedures inside the uploadAction(instance of
> org.apache.struts.action.Action) and afterwards forwarding the request to
> another page. While it is forwarding the request, it gives the following error:
>
> javax.servlet.ServletException: MultipartIterator: no multipart request data
> sent
>         java.lang.Throwable(java.lang.String)
>         java.lang.Exception(java.lang.String)
>         javax.servlet.ServletException(java.lang.String)
>         void org.apache.struts.upload.MultipartIterator.parseRequest()
>
> org.apache.struts.upload.MultipartIterator(javax.servlet.http.HttpServletRequest
> , int, long, java.lang.String)
>         void
> org.apache.struts.upload.DiskMultipartRequestHandler.handleRequest(javax.servlet
> .http.HttpServletRequest)
>         void org.apache.struts.util.RequestUtils.populate(java.lang.Object,
> java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest)
>         void
> org.apache.struts.action.ActionServlet.processPopulate(org.apache.struts.action.
> ActionForm, org.apache.struts.action.ActionMapping,
> javax.servlet.http.HttpServletRequest)
>         void
> org.apache.struts.action.ActionServlet.process(javax.servlet.http.HttpServletReq
> uest, javax.servlet.http.HttpServletResponse)
>         void
> com.ubs.cristal.actions.CristalActionServlet.process(javax.servlet.http.HttpServ
> letRequest, javax.servlet.http.HttpServletResponse)
>         void
> org.apache.struts.action.ActionServlet.doPost(javax.servlet.http.HttpServletRequ
> est, javax.servlet.http.HttpServletResponse)
>         void
> javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest,
> javax.servlet.http.HttpServletResponse)
>         void
> javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest,
> javax.servlet.ServletResponse)
>         void
> org.apache.tomcat.core.ServletWrapper.doService(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.Handler.service(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.ServletWrapper.service(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.facade.RequestDispatcherImpl.forward(javax.servlet.ServletRequ
> est, javax.servlet.ServletResponse)
>         void
> org.apache.struts.action.ActionServlet.processActionForward(org.apache.struts.ac
> tion.ActionForward, org.apache.struts.action.ActionMapping,
> org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest,
> javax.servlet.http.HttpServletResponse)
>         void
> org.apache.struts.action.ActionServlet.process(javax.servlet.http.HttpServletReq
> uest, javax.servlet.http.HttpServletResponse)
>         void
> com.ubs.cristal.actions.CristalActionServlet.process(javax.servlet.http.HttpServ
> letRequest, javax.servlet.http.HttpServletResponse)
>         void
> org.apache.struts.action.ActionServlet.doPost(javax.servlet.http.HttpServletRequ
> est, javax.servlet.http.HttpServletResponse)
>         void
> javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest,
> javax.servlet.http.HttpServletResponse)
>         void
> javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest,
> javax.servlet.ServletResponse)
>         void
> org.apache.tomcat.core.ServletWrapper.doService(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.Handler.service(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.ServletWrapper.service(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.ContextManager.internalService(org.apache.tomcat.core.Req
> uest, org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.core.ContextManager.service(org.apache.tomcat.core.Request,
> org.apache.tomcat.core.Response)
>         void
> org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(org.apach
> e.tomcat.service.TcpConnection, java.lang.Object [])
>         void org.apache.tomcat.service.TcpWorkerThread.runIt(java.lang.Object
> [])
>         void org.apache.tomcat.util.ThreadPool$ControlRunnable.run()
>         void java.lang.Thread.run()
>
> Anybody had this error before or has an idea?
>
> Thanks...
>
> Nuray