(RC 4.3.4)中的rich:fileUpload 组件在Apache Tomcat7 和JSF 2.2 上工作吗? :“无法读取请求序言”

Posted

技术标签:

【中文标题】(RC 4.3.4)中的rich:fileUpload 组件在Apache Tomcat7 和JSF 2.2 上工作吗? :“无法读取请求序言”【英文标题】:Is rich:fileUpload component in (RC 4.3.4) working on Apache Tomcat7 and JSF 2.2 ? : "Request prolog cannot be read" 【发布时间】:2013-11-18 02:53:51 【问题描述】:

我正在尝试使用 Richfaces 文件上传组件上传文件。我的 bean 在视图范围内。

我从展示中提取的代码。

            <rich:fileUpload  id="upload" immediateUpload="true" fileUploadListener="#analyse.listener"  acceptedTypes="png" ontyperejected="alert('Seulement les fichiers avec l'extension bam et pdf sont acceptés.');" maxFilesQuantity="3">
                  <a4j:ajax event="uploadcomplete" execute="@none" />        
            </rich:fileUpload>

调用的bean函数:

    public void listener(FileUploadEvent event) throws Exception 


    System.out.println("Listenner");

    UploadedFile item = event.getUploadedFile();

    System.out.println(item.getName());
    System.out.println(item.getSize());
    System.out.println(item.getContentType()) ;

     

当我尝试添加要上传的文件时,我得到了一个漂亮的错误:-(。欢迎帮助。

11 月 6 日。 2013 19:00:43 org.richfaces.request.MultipartRequest25 parseIfNecessary GRAVE:解析多部分请求的异常:请求 prolog 无法读取 org.richfaces.exception.FileUploadException: 解析多部分请求的异常:无法读取请求序言 org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:156) 在 org.richfaces.request.MultipartRequest25.parseIfNecessary(MultipartRequest25.java:77) 在 org.richfaces.request.MultipartRequest25.getParameter(MultipartRequest25.java:114) 在 com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:75) 在 com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:56) 在 java.util.Collections$UnmodifiableMap.get(Collections.java:1280) 在 com.sun.faces.facelets.tag.ui.UIDebug.debugRequest(UIDebug.java:168) 在 com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager.decode(ELFlash.java:1268) 在 com.sun.faces.context.flash.ELFlash.getCurrentFlashManager(ELFlash.java:1093) 在 com.sun.faces.context.flash.ELFlash.doPrePhaseActions(ELFlash.java:569) 在 com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:215) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99) 在 com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 引起: java.io.IOException:无法读取请求序言 org.richfaces.request.MultipartRequestParser.readProlog(MultipartRequestParser.java:270) 在 org.richfaces.request.MultipartRequestParser.initialize(MultipartRequestParser.java:172) 在 org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:148) ... 70 更多 11 月 6 日。 2013 19:00:43 com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager 解码坟墓:JSF1094:无法解码来自传入的闪存数据 cookie 值 3Xfn_。处理将继续,但闪存是 此请求不可用。 11 月 6 日2013 19:00:43 org.apache.catalina.core.ApplicationDispatcher 调用 GRAVE: "Servlet.service()" 为 servlet facesServlet 倒了一个 lancé une 异常 java.lang.NullPointerException 在 com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:485) 在 com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:73) 在 com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:619) 在 javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:116) 在 org.richfaces.context.PartialResponseWriterWrapper.startDocument(PartialResponseWriterWrapper.java:32) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:124) 在 javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) 在 com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 11 月 6 日。 2013 19:00:43 org.apache.catalina.core.StandardWrapperValve 调用 GRAVE: "Servlet.service()" 为 servlet facesServlet 提供一个 généré une 异常 java.lang.NullPointerException 在 com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:485) 在 com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:73) 在 com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:619) 在 javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:116) 在 org.richfaces.context.PartialResponseWriterWrapper.startDocument(PartialResponseWriterWrapper.java:32) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:124) 在 javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) 在 com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 11 月 6 日。 2013 19:00:43 org.richfaces.request.MultipartRequest25 parseIfNecessary GRAVE: 解析多部分请求的异常:无法读取请求序言 org.richfaces.exception.FileUploadException:异常解析 多部分请求:无法读取请求序言 org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:156) 在 org.richfaces.request.MultipartRequest25.parseIfNecessary(MultipartRequest25.java:77) 在 org.richfaces.request.MultipartRequest25.getParameter(MultipartRequest25.java:114) 在 com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:75) 在 com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:56) 在 java.util.Collections$UnmodifiableMap.get(Collections.java:1280) 在 com.sun.faces.facelets.tag.ui.UIDebug.debugRequest(UIDebug.java:168) 在 com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager.decode(ELFlash.java:1268) 在 com.sun.faces.context.flash.ELFlash.getCurrentFlashManager(ELFlash.java:1093) 在 com.sun.faces.context.flash.ELFlash.doPrePhaseActions(ELFlash.java:569) 在 com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:215) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99) 在 com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467) 在 org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:338) 在 org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:428) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:201) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 引起: java.io.IOException:无法读取请求序言 org.richfaces.request.MultipartRequestParser.readProlog(MultipartRequestParser.java:270) 在 org.richfaces.request.MultipartRequestParser.initialize(MultipartRequestParser.java:172) 在 org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:148) ... 34 更多 11 月 6 日。 2013 19:00:43 com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager 解码坟墓:JSF1094:无法解码来自传入的闪存数据 cookie 值 3Xfn_。处理将继续,但闪存是 此请求不可用。 11 月 6 日2013 19:00:43 org.apache.catalina.core.ApplicationDispatcher 调用 GRAVE: "Servlet.service()" 为 servlet facesServlet 倒了一个 lancé une 异常 java.lang.NullPointerException 在 com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:485) 在 com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:73) 在 com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:619) 在 javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:116) 在 org.richfaces.context.PartialResponseWriterWrapper.startDocument(PartialResponseWriterWrapper.java:32) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199) 在 com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:124) 在 javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) 在 com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467)

【问题讨论】:

【参考方案1】:

总结:使用&lt;h:inputFile /&gt;,至少我无法让&lt;rich:fileUpload&gt;在JSF-2.2中工作

加长版: 在与&lt;rich:fileUpload&gt; 混了一天之后,我得出的结论是,遵守 Servlet-3.0 规范的 servlet 容器在这里处于两难境地。

似乎正在发生的事情是 Tomcat(或任何实现 Servlet-3.0 及更高版本的 servlet 容器 - 我尝试使用 Wildfly 的 undertow)通过 HttpServletRequest#getParts() 方法使多部分 POST 提交可用。它还可以很好地解析表单数据并通过ServletRequest#getParameter 提供它,它明确指出:

如果参数数据是在请求正文中发送的,例如发生在 HTTP POST 请求中,那么直接通过 getInputStream() 或 getReader() 读取正文可能会干扰该方法的执行。

如果您使用不存在的参数名称调用 getParameter 方法,这正是 MultipartRequest25 所做的:

 String parameter = super.getParameter(name);
 if (parameter != null) 
     return parameter;
 
 parseIfNecessary();

parseIfNecessary() 部分尝试读取序言,但是由于容器已经解析了请求正文,因此流是空的,并且从中读取会立即生成 EOF,它被转换为我们看到的 IOException .

从类命名中,我了解到这是为 Servlet-2.5 容器编写的,这可能有效并且信息不容易获得。

此时,我决定利用我对 JSF-2.2 的使用并切换到 h:inputFile,当您使用最新的(在撰写本文时)Mojarra-2.2.5(尚未尝试 Myfaces)时,它的效果非常好.

这是一个例子:

<h:form id="fileUploadForm" enctype="multipart/form-data">
    <h:inputFile value="#docMgr.file" required="true">
        <f:ajax listener="#docMgr.saveFile" render="@form" />
    </h:inputFile>
    <h:messages />
</h:form>

请注意,Mojarra-2.2.5 之前的版本存在 ajax 提交问题,如上例所示(模仿 RichFaces 的 immediateUpload

【讨论】:

对于记录,有一个问题跟踪器条目:RF-13444。 RichFaces 5 的问题似乎已解决,但至少 RichFaces 4.3.5 仍然存在此错误。 JBOSS 8 上的同样问题 @mabi 我目前正在使用 Mojarra 2.2.6 和 RichFaces 4.3.4,但我的监听器没有被调用(但部分已更新),你有这个问题吗? @AlexandreLavoie 不,我遇到了问题中发布的错误。所以,不知道,新问题? @mabi 用 Mojarra 2.2.5 和 RichFaces 4.3.4 进行了很好的测试,同样的问题,我想我会发布一个问题!没有 RichFaces,它可以工作!

以上是关于(RC 4.3.4)中的rich:fileUpload 组件在Apache Tomcat7 和JSF 2.2 上工作吗? :“无法读取请求序言”的主要内容,如果未能解决你的问题,请参考以下文章

vc中的rc和rc2的区别

nodejs中的`rc`文件是啥?

npm包版本结构中的“rc”是啥[关闭]

安卓菜鸟关于 init.rc 中的 init.$ro.hardware.rc 与 out 目录下生成的.rc文件名不一致的问题

如何将一系列数组转换为 pandas/numpy 中的单个矩阵?

centos7中的/etc/rc.local文件权限问题