Hi Felix, just tested it and it works for me :-) Thanks a lot!
Regards, Alex On Jan 23, 2008 4:09 PM, Felix Meschberger <[EMAIL PROTECTED]> wrote: > Hi Alex, > > Sorry for the delay, I just found (and hopefully fixed) the problem. It > is caused by the DefaultSlingScript which gets the request reader. This > causes the exception to be thrown for multipart/form-data requests. > > I fix this by using a lazy reader just like we have a lazy writer. > > Hope this helps. > > Regards > Felix > > > Am Montag, den 21.01.2008, 16:42 +0100 schrieb Alexander Saar: > > Hi Felix, > > thanks for the reply. > > > > I switched to using request.getRequestParameterMap() in my POST.jsp, but > > nothing changed and the error is the same. After inspecting the stack > > trace and my repository again I think the error occurs when Sling tries > > to read the input and build the request parameter map, because my script > > is never compiled or executed (at least there is no compiled class in > > the repository). > > > > To verify this I used an simple POST.jsp that just outputs a plain > > string and does not access any parameters. When I post my file I get the > > same exception. > > > > Regards, > > Alex > > > > > > Felix Meschberger schrieb: > > > Hi Alexander, > > > > > > If you upload the file with a multipart/form-data POST, Sling will > > > already have read the input and will provide the data in the > > > RequestParameterMap as RequestParameter instances, which allow you > > > access to the uploaded file data. > > > > > > Hope, this helps. > > > > > > Regards > > > Felix > > > > > > Am Montag, den 21.01.2008, 01:01 +0100 schrieb Alexander Saar: > > > > > >> Hi all, > > >> I have a problem with the file upload in Sling. I have a form that > > >> uploads a file and an according POST.jsp for handling the upload. The > > >> log shows that POST.jsp is resolved correct, but when I try to upload > > >> the file, I get the following exception: > > >> > > >> javax.servlet.ServletException: null > > >> org.apache.sling.scripting.resolver.impl.DefaultSlingScript.eval( > DefaultSlingScript.java:97) > > >> > org.apache.sling.servlet.resolver.helper.SlingScriptServlet.service( > SlingScriptServlet.java:74) > > >> org.apache.sling.core.impl.request.RequestData.service( > RequestData.java:415) > > >> org.apache.sling.core.impl.SlingMainServlet.processRequest( > SlingMainServlet.java:287) > > >> org.apache.sling.core.impl.filter.RequestSlingFilterChain.render( > RequestSlingFilterChain.java:48) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:54) > > >> org.apache.sling.core.impl.filter.ThemeResolverFilter.doFilter( > ThemeResolverFilter.java:76) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.filter.LocaleResolverFilter.doFilter( > LocaleResolverFilter.java:85) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.log.RequestLoggerFilter.doFilter( > RequestLoggerFilter.java:206) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:187) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:159) > > >> > org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest > (ServletRegistration.java:90) > > >> > org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias( > ProxyServlet.java:109) > > >> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service( > ProxyServlet.java:75) > > >> javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > > >> org.apache.sling.launcher.webapp.SlingServlet.service( > SlingServlet.java:195) > > >> > > >> *root cause* > > >> > > >> javax.script.ScriptException: null > > >> > org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval > (JspScriptEngineFactory.java:272) > > >> org.apache.sling.scripting.resolver.impl.DefaultSlingScript.eval( > DefaultSlingScript.java:85) > > >> > org.apache.sling.servlet.resolver.helper.SlingScriptServlet.service( > SlingScriptServlet.java:74) > > >> org.apache.sling.core.impl.request.RequestData.service( > RequestData.java:415) > > >> org.apache.sling.core.impl.SlingMainServlet.processRequest( > SlingMainServlet.java:287) > > >> org.apache.sling.core.impl.filter.RequestSlingFilterChain.render( > RequestSlingFilterChain.java:48) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:54) > > >> org.apache.sling.core.impl.filter.ThemeResolverFilter.doFilter( > ThemeResolverFilter.java:76) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.filter.LocaleResolverFilter.doFilter( > LocaleResolverFilter.java:85) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.log.RequestLoggerFilter.doFilter( > RequestLoggerFilter.java:206) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:187) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:159) > > >> > org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest > (ServletRegistration.java:90) > > >> > org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias( > ProxyServlet.java:109) > > >> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service( > ProxyServlet.java:75) > > >> javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > > >> org.apache.sling.launcher.webapp.SlingServlet.service( > SlingServlet.java:195) > > >> > > >> *root cause* > > >> > > >> java.lang.IllegalStateException: getReader() has already been called > for this request > > >> org.apache.catalina.connector.Request.getInputStream(Request.java > :978) > > >> org.apache.catalina.connector.RequestFacade.getInputStream( > RequestFacade.java:340) > > >> javax.servlet.ServletRequestWrapper.getInputStream( > ServletRequestWrapper.java:146) > > >> > org.apache.commons.fileupload.servlet.ServletRequestContext.getInputStream > (ServletRequestContext.java:92) > > >> org.apache.commons.fileupload.FileUploadBase.parseRequest( > FileUploadBase.java:329) > > >> > org.apache.sling.core.impl.parameters.ParameterSupport.parseMultiPartPost( > ParameterSupport.java:166) > > >> > org.apache.sling.core.impl.parameters.ParameterSupport.getRequestParameterMapInternal > (ParameterSupport.java:110) > > >> > org.apache.sling.core.impl.parameters.ParameterSupport.getRequestParameter > (ParameterSupport.java:87) > > >> > org.apache.sling.core.impl.parameters.ParameterSupport.getParameter( > ParameterSupport.java:68) > > >> > org.apache.sling.core.impl.SlingHttpServletRequestImpl.getParameter( > SlingHttpServletRequestImpl.java:125) > > >> org.apache.sling.scripting.jsp.JspServletWrapperAdapter.preCompile > (JspServletWrapperAdapter.java:78) > > >> org.apache.sling.scripting.jsp.JspServletWrapperAdapter.service( > JspServletWrapperAdapter.java:49) > > >> org.apache.sling.scripting.jsp.JspScriptEngineFactory.callJsp( > JspScriptEngineFactory.java:126) > > >> org.apache.sling.scripting.jsp.JspScriptEngineFactory.access$000( > JspScriptEngineFactory.java:71) > > >> > org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval > (JspScriptEngineFactory.java:268) > > >> org.apache.sling.scripting.resolver.impl.DefaultSlingScript.eval( > DefaultSlingScript.java:85) > > >> > org.apache.sling.servlet.resolver.helper.SlingScriptServlet.service( > SlingScriptServlet.java:74) > > >> org.apache.sling.core.impl.request.RequestData.service( > RequestData.java:415) > > >> org.apache.sling.core.impl.SlingMainServlet.processRequest( > SlingMainServlet.java:287) > > >> org.apache.sling.core.impl.filter.RequestSlingFilterChain.render( > RequestSlingFilterChain.java:48) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:54) > > >> org.apache.sling.core.impl.filter.ThemeResolverFilter.doFilter( > ThemeResolverFilter.java:76) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.filter.LocaleResolverFilter.doFilter( > LocaleResolverFilter.java:85) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.log.RequestLoggerFilter.doFilter( > RequestLoggerFilter.java:206) > > >> > org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter( > AbstractSlingFilterChain.java:52) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:187) > > >> org.apache.sling.core.impl.SlingMainServlet.service( > SlingMainServlet.java:159) > > >> > org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest > (ServletRegistration.java:90) > > >> > org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias( > ProxyServlet.java:109) > > >> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service( > ProxyServlet.java:75) > > >> javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > > >> org.apache.sling.launcher.webapp.SlingServlet.service( > SlingServlet.java:195) > > >> > > >> Seems like somebody is calling getReader() before ParameterSupport > code > > >> is executed. But I was not able to figure out where this happens. > > >> > > >> Any ideas? > > >> > > >> Regards, > > >> Alex > > >> > > >> > > > > > > > > > > -- Alexander Saar Mobile: +49.177.5985437 E-Mail: [EMAIL PROTECTED] Web: http://alexander.saar.googlepages.com Blog: http://weblogs.goshaky.com/weblogs/saar/
