Hi,
I am having a problem with <xforms:upload> controls. I have reproduced the problem in as simple a form as I can in the following example. I have a very simple form:
<xf:model xmlns:xf="http://www.w3.org/2002/xforms" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xf:instance>
<form>
<action/>
<file filename="" mediatype="" size="" xsi:type="xs:anyURI"/>
</form>
</xf:instance> <xf:submission method="post" encoding="multipart/form-data"/>
</xf:model>
and an equally simple view:
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xhtml:body>
<xf:group ref="form">
<xf:upload ref="file">
<xf:filename ref="@filename"/>
<xf:mediatype ref="@mediatype"/>
<xxf:size ref="@size"/>
</xf:upload>
<xf:submit>
<xf:label>Upload</xf:label>
<xf:setvalue ref="action">upload</xf:setvalue>
</xf:submit>
</xf:group>
</xhtml:body>
</xhtml:html>
...and the entry in my page view controller for this is:
<page id="upload-test" path-info="/upload-test.html" view="/upload-test/view.xml" xforms="/upload-test/xforms-model.xml">
<action when="/form/action = 'upload'" action="/upload-test/do-upload.xpl">
<result page="home"/> </action>
</page>
When the form is submitted the do-upload.xpl pipeline is executed okay (it puts the doc in Tamino). However, it never gets to the reuslt page as the folowing exception is thrown:
Type class org.apache.commons.fileupload.FileUploadException
Message Processing of multipart/form-data request failed. Stream closed
Stack Trace
org.apache.commons.fileupload.FileUploadException: Processing of multipart/form-data request failed. Stream closed
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:429)
at org.apache.commons.fileupload.DiskFileUpload.parseRequest(DiskFileUpload.java:245)
at org.orbeon.oxf.servlet.ServletExternalContext.getParameterMapMultipart(ServletExternalContext.java:384)
at org.orbeon.oxf.servlet.ServletExternalContext$Request.getParameterMap(ServletExternalContext.java:130)
at org.orbeon.oxf.processor.generator.RequestGenerator.addParameters(RequestGenerator.java:465)
at org.orbeon.oxf.processor.generator.RequestGenerator.readRequestAsDOM4J(RequestGenerator.java:323)
at org.orbeon.oxf.processor.generator.RequestGenerator.readWholeRequestAsDOM4J(RequestGenerator.java:303)
at org.orbeon.oxf.processor.generator.RequestGenerator.readRequestAsDOM4J(RequestGenerator.java:293)
at org.orbeon.oxf.processor.generator.RequestGenerator.access$600(RequestGenerator.java:77)
at org.orbeon.oxf.processor.generator.RequestGenerator$1.fillOutState(RequestGenerator.java:209)
at org.orbeon.oxf.processor.ProcessorImpl$DigestTransformerOutputImpl.getFilledOutState(ProcessorImpl.java:1311)
at org.orbeon.oxf.processor.ProcessorImpl$DigestTransformerOutputImpl.getLocalKey(ProcessorImpl.java:1269)
at org.orbeon.oxf.processor.ProcessorImpl$CacheableTransformerOutputImpl.getKeyImpl(ProcessorImpl.java:1213)
at org.orbeon.oxf.processor.ProcessorImpl$6.getKey(ProcessorImpl.java:949)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.getKey(ProcessorImpl.java:1113)
at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.getKeyImpl(TeeProcessor.java:70)
at org.orbeon.oxf.processor.ProcessorImpl$6.getKey(ProcessorImpl.java:949)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.getKey(ProcessorImpl.java:1113)
at org.orbeon.oxf.processor.ProcessorImpl.getInputKey(ProcessorImpl.java:1123)
at org.orbeon.oxf.processor.ProcessorImpl.getInputKeyValidity(ProcessorImpl.java:1154)
at org.orbeon.oxf.processor.ProcessorImpl.isInputInCache(ProcessorImpl.java:1137)
at org.orbeon.oxf.processor.ProcessorImpl.isInputInCache(ProcessorImpl.java:1144)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.access$100(ConcreteChooseProcessor.java:33)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.getKeyImpl(ConcreteChooseProcessor.java:126)
at org.orbeon.oxf.processor.ProcessorImpl$6.getKey(ProcessorImpl.java:949)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.getKey(ProcessorImpl.java:1113)
at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.getKeyImpl(TeeProcessor.java:70)
at org.orbeon.oxf.processor.ProcessorImpl$6.getKey(ProcessorImpl.java:949)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.getKey(ProcessorImpl.java:1113)
at org.orbeon.oxf.processor.ProcessorImpl.getInputKey(ProcessorImpl.java:1123)
at org.orbeon.oxf.processor.ProcessorImpl.getInputKeyValidity(ProcessorImpl.java:1154)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:447)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsDOM4J(ProcessorImpl.java:417)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:163)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:618)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:505)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:616)
at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:385)
at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:91)
at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:94)
at org.orbeon.oxf.servlet.OXFServletDelegate.service(OXFServletDelegate.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.orbeon.oxf.servlet.OXFServlet.service(OXFServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.orbeon.oxf.servlet.ServletExternalContext$Response.sendRedirect(ServletExternalContext.java:469)
at org.orbeon.oxf.processor.RedirectProcessor.start(RedirectProcessor.java:68)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:618)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:505)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:616)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.getInput(PipelineProcessor.java:141)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:340)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsDOM4J(ProcessorImpl.java:395)
at org.orbeon.oxf.processor.ProcessorImpl$4.read(ProcessorImpl.java:419)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:461)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsDOM4J(ProcessorImpl.java:417)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:163)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:120)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:340)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:345)
at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:30)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:340)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:61)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:97)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:505)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:61)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:95)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:340)
at org.orbeon.oxf.processor.pipeline.TeeProcessor.access$100(TeeProcessor.java:27)
at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.readImpl(TeeProcessor.java:48)
at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1106)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:340)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsDOM4J(ProcessorImpl.java:395)
at org.orbeon.oxf.processor.ProcessorImpl$4.read(ProcessorImpl.java:419)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:461)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsDOM4J(ProcessorImpl.java:417)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:163)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:618)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:505)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:616)
at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:385)
at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:91)
at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:94)
at org.orbeon.oxf.servlet.OXFServletDelegate.service(OXFServletDelegate.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.orbeon.oxf.servlet.OXFServlet.service(OXFServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:551)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:536)
This doesnt happen if you dont have the result page in the page view controller.
David Sinclair.
PS,
I am using version 2.7.2 of presentation server
------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ orbeon-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/orbeon-user
