Rich: FileUpload ViewExpiredException

Я использую Rich:fileUpload:

<rich:fileUpload id="upload" addLabel="Add File"
      clearAllLabel="Delete Files" deleteLabel="Remove" 
      uploadLabel="Process Fle" doneLabel="Processed file" 
      clearLabel="Close" listHeight="100" 
      maxFilesQuantity="1" fileUploadListener="#{mbean.listener}" > 
      <a4j:ajax event="uploadcomplete" execute="@none" render="panelResult"  />
</rich:fileUpload>

Java-код в mbean.listener работает нормально, но когда процесс завершается, появляется следующая ошибка:

09:03:49,385 ERROR [br.com.enterprise.enterprisex.faces.common.EnterpriseExceptionHandler] EnterpriseExceptionHandler.handle: 
javax.faces.application.ViewExpiredException: /1_ProcessForm.jsfNo saved view state could be found for the view identifier: /1_ProcessForm.jsf
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

mbean.listener:

    public void listener(FileUploadEvent event) throws Exception {
    UploadedFile item = event.getUploadedFile();
    LOGGER.debug("upload listener: fileName=" + item.getName());        
}

Эта ошибка возникает только в этом компоненте Richfaces. Нужно ли делать какую-то дополнительную настройку?

Спасибо.


person vctlzac    schedule 20.09.2012    source источник
comment
Пожалуйста, вставьте прослушиватель загрузки файлов сюда.   -  person kolossus    schedule 21.09.2012
comment
@kolossus, я редактирую вопрос и добавляю слушателя. Код в порядке. Спасибо.   -  person vctlzac    schedule 21.09.2012


Ответы (1)


Вы узнаете этот путь /1_ProcessForm.jsf? Контекст задыхается от этого бита, скорее всего, потому, что этого пути не существует. Соответствует ли этот путь точно идентификатору представления страницы, на которой вы выполняете загрузку файла (включая ведущую косую черту «/»)

РЕДАКТИРОВАТЬ: Очевидно, в этом может быть виновата ошибка с RF 4.0. Дайте знать, как вы справляетесь с этой проблемой

person kolossus    schedule 21.09.2012
comment
Путь в порядке. Когда конфигурация javax.faces.STATE_SAVING_METHOD является сервером, этот компонент работает нормально, но мне нужен клиент по другим причинам: stackoverflow.com/questions/12370904/ - person vctlzac; 21.09.2012
comment
похоже, это ошибка с RF. Прости. Редактирование ответа, чтобы отразить исследование - person kolossus; 21.09.2012
comment
Спасибо за Ваш ответ. Я вижу это: community.jboss.org/thread/164999, а затем меняю свой mbean с ViewScoped в SessionScoped и проблема решена, но я считаю, что это не идеальное решение, потому что этот mbean должен быть viewScoped. - person vctlzac; 21.09.2012
comment
Он определенно далек от идеала. Если у вас уже есть bean-компонент @SessionScoped (например, для представления общего пользовательского сеанса), вы можете хранить там артефакты, относящиеся к вашей операции, и использовать bean-компонент @RequestScoped для страницы. Экономит вам немного места в куче и, возможно, злоупотребляет SessionScope в долгосрочной перспективе. - person kolossus; 21.09.2012