Done https://issues.apache.org/jira/browse/WICKET-4227
Best regards, Michal Wegrzyn > -----Original Message----- > From: Martin Grigorov [mailto:mgrigo...@apache.org] > Sent: Monday, November 14, 2011 13:43 > To: users@wicket.apache.org > Subject: Re: abort loading lazy components > > Ticket + quickstart > > On Mon, Nov 14, 2011 at 2:39 PM, Michal Wegrzyn > <michal.wegr...@onior.com> wrote: > > Just tried with 1.5.3 - unfortunately I still get an exception. > > > >> -----Original Message----- > >> From: Martin Grigorov [mailto:mgrigo...@apache.org] > >> Sent: Thursday, November 10, 2011 14:50 > >> To: users@wicket.apache.org > >> Subject: Re: abort loading lazy components > >> > >> This is fixed in 1.5.3 (currently in voting) > >> > >> On Thu, Nov 10, 2011 at 3:37 PM, Michal Wegrzyn > >> <michal.wegr...@onior.com> wrote: > >> >> -----Original Message----- > >> >> From: Martin Grigorov [mailto:mgrigo...@apache.org] > >> >> Sent: Thursday, November 10, 2011 9:48 > >> >> To: users@wicket.apache.org > >> >> Subject: Re: abort loading lazy components > >> >> > >> >> Hi, > >> >> > >> >> I see no solution for your case. > >> >> Using BookmarkablePageLink works as you confirmed but I'm not > aware > >> of > >> >> clean way to cancel running Ajax requests and replace them with > >> >> completely new one. > >> >> > >> >> XMLHttpRequest has #abort() method which cancels the request but > >> this > >> >> will lead co "socket close exception"s in the server side. > >> >> > >> > > >> > Right, I've already looked at XMLHttpRequest#abort(). It wouldn't > be > >> a "clean" solution anyway. > >> > > >> >> The best approach I see is to use the same AjaxChannel name for > all > >> >> LazyLoadPanels and the AjaxLinks. The LazyLoadPanels should use > type > >> >> QUEUE and the AjaxLinks - type DROP. This way all LazyLoadPanels > >> will > >> >> load sequencially and if you click an AjaxLink it will cancel all > >> >> pending LazyLoadPanels and will schedule the execution of the > >> AjaxLink > >> >> after the end of the currently loading LazyLoadPanel > >> >> > >> >> HTH > >> > > >> > That's what I've already done - Wicket schedules and executes > >> AjaxLink action (it does not wait for other lazy panels - so far, so > >> good ), but then (already during handling new ajax request) Wicket > >> throws exception. Isn't it a Wicket bug? > >> > > >> > 15:31:11.847 user [http-8888-2] WARN > >> o.a.w.r.h.render.WebPageRenderer - The Buffered response should be > >> handled by BufferedResponseRequestHandler > >> > 15:32:24.028 user [http-8888-5] ERROR > >> o.a.wicket.DefaultExceptionMapper - Unexpected error occurred > >> > org.apache.wicket.request.handler.ComponentNotFoundException: > Could > >> not find component > >> 'folders:listContainer:itemList:29:itemPanel:folder:children' on > page > >> 'class package.MyPage > >> > at > >> > org.apache.wicket.request.handler.PageAndComponentProvider.getComponent > >> (PageAndComponentProvider.java:167) > >> > at > >> > org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.getCo > >> mponent(ListenerInterfaceRequestHandler.java:92) > >> > at > >> > org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respo > >> nd(ListenerInterfaceRequestHandler.java:169) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(Re > >> questCycle.java:750) > >> > at > >> > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerSta > >> ck.java:64) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java: > >> 252) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycl > >> e.java:209) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(Re > >> questCycle.java:280) > >> > at > >> > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilte > >> r.java:162) > >> > at > >> > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java > >> :218) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > package.MyRequestContextFilter.doFilter(MyRequestContextFilter.java:43) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:368) > >> > at > >> > org.springframework.security.web.access.intercept.FilterSecurityInterce > >> ptor.invoke(FilterSecurityInterceptor.java:109) > >> > at > >> > org.springframework.security.web.access.intercept.FilterSecurityInterce > >> ptor.doFilter(FilterSecurityInterceptor.java:83) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.access.ExceptionTranslationFilter.doFi > >> lter(ExceptionTranslationFilter.java:97) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.session.SessionManagementFilter.doFilt > >> er(SessionManagementFilter.java:100) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.AnonymousAuthentication > >> Filter.doFilter(AnonymousAuthenticationFilter.java:78) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.servletapi.SecurityContextHolderAwareR > >> > equestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.savedrequest.RequestCacheAwareFilter.d > >> oFilter(RequestCacheAwareFilter.java:35) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.AbstractAuthenticationP > >> > rocessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:18 > >> 7) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.logout.LogoutFilter.doF > >> ilter(LogoutFilter.java:105) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.context.SecurityContextPersistenceFilt > >> er.doFilter(SecurityContextPersistenceFilter.java:79) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.FilterChainProxy.doFilter(FilterChainP > >> roxy.java:169) > >> > at > >> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Del > >> egatingFilterProxy.java:237) > >> > at > >> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegatin > >> gFilterProxy.java:167) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal > >> ve.java:233) > >> > at > >> > org.apache.catalina.core.StandardContextValve.__invoke(StandardContextV > >> alve.java:191) > >> > at > >> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal > >> ve.java) > >> > at > >> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav > >> a:127) > >> > at > >> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav > >> a:102) > >> > at > >> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve > >> .java:109) > >> > at > >> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > >> 298) > >> > at > >> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:8 > >> 57) > >> > at > >> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process > >> (Http11Protocol.java:588) > >> > at > >> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > >> > at java.lang.Thread.run(Unknown Source) 15:32:24.050 user > >> [http-8888-5] ERROR o.a.w.request.RequestHandlerStack - Error > detaching > >> RequestHandler > >> > org.apache.wicket.request.handler.ComponentNotFoundException: > Could > >> not find component > >> 'folders:listContainer:itemList:29:itemPanel:folder:children' on > page > >> 'class package.MyPage > >> > at > >> > org.apache.wicket.request.handler.PageAndComponentProvider.getComponent > >> (PageAndComponentProvider.java:167) > >> > at > >> > org.apache.wicket.request.handler.logger.ListenerInterfaceLogData.<init > >> >(ListenerInterfaceLogData.java:51) > >> > at > >> > org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.detac > >> h(ListenerInterfaceRequestHandler.java:134) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.detach(Req > >> uestCycle.java:761) > >> > at > >> > org.apache.wicket.request.RequestHandlerStack.detach(RequestHandlerStac > >> k.java:180) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java > >> :565) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:5 > >> 08) > >> > at > >> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(Re > >> questCycle.java:284) > >> > at > >> > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilte > >> r.java:162) > >> > at > >> > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java > >> :218) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > package.MyRequestContextFilter.doFilter(MyRequestContextFilter.java:43) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:368) > >> > at > >> > org.springframework.security.web.access.intercept.FilterSecurityInterce > >> ptor.invoke(FilterSecurityInterceptor.java:109) > >> > at > >> > org.springframework.security.web.access.intercept.FilterSecurityInterce > >> ptor.doFilter(FilterSecurityInterceptor.java:83) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.access.ExceptionTranslationFilter.doFi > >> lter(ExceptionTranslationFilter.java:97) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.session.SessionManagementFilter.doFilt > >> er(SessionManagementFilter.java:100) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.AnonymousAuthentication > >> Filter.doFilter(AnonymousAuthenticationFilter.java:78) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.servletapi.SecurityContextHolderAwareR > >> > equestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.savedrequest.RequestCacheAwareFilter.d > >> oFilter(RequestCacheAwareFilter.java:35) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.AbstractAuthenticationP > >> > rocessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:18 > >> 7) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.authentication.logout.LogoutFilter.doF > >> ilter(LogoutFilter.java:105) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.context.SecurityContextPersistenceFilt > >> er.doFilter(SecurityContextPersistenceFilter.java:79) > >> > at > >> > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.do > >> Filter(FilterChainProxy.java:380) > >> > at > >> > org.springframework.security.web.FilterChainProxy.doFilter(FilterChainP > >> roxy.java:169) > >> > at > >> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Del > >> egatingFilterProxy.java:237) > >> > at > >> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegatin > >> gFilterProxy.java:167) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic > >> ationFilterChain.java:235) > >> > at > >> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil > >> terChain.java:206) > >> > at > >> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal > >> ve.java:233) > >> > at > >> > org.apache.catalina.core.StandardContextValve.__invoke(StandardContextV > >> alve.java:191) > >> > at > >> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal > >> ve.java) > >> > at > >> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav > >> a:127) > >> > at > >> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav > >> a:102) > >> > at > >> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve > >> .java:109) > >> > at > >> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > >> 298) > >> > at > >> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:8 > >> 57) > >> > at > >> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process > >> (Http11Protocol.java:588) > >> > at > >> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > >> > at java.lang.Thread.run(Unknown Source) > >> > 15:32:24.183 user [http-8888-2] WARN > >> o.a.w.r.h.render.WebPageRenderer - The Buffered response should be > >> handled by BufferedResponseRequestHandler > >> > > >> > > >> >> On Thu, Nov 10, 2011 at 10:37 AM, Michal Wegrzyn > >> >> <michal.wegr...@onior.com> wrote: > >> >> > Hi, > >> >> > > >> >> > Could you please tell me what is the status of this issue? > >> >> > Should I create a Jira issue and/or quickstart or is it won't > >> >> fix/invalid? > >> >> > > >> >> > Best regards, > >> >> > Michal Wegrzyn > >> >> > > >> >> >> -----Original Message----- > >> >> >> From: Michal Wegrzyn [mailto:michal.wegr...@onior.com] > >> >> >> Sent: Friday, November 04, 2011 11:56 > >> >> >> To: users@wicket.apache.org > >> >> >> Subject: RE: abort loading lazy components > >> >> >> > >> >> >> Thanks for an update Martin. > >> >> >> > >> >> >> Unfortunately using IAjaxCallDecorator#decorateScript() > prevents > >> >> >> handling request (nothing happens). > >> >> >> If I append the stop script directly to ajax request target > >> (before > >> >> >> sending event), then request proceeds, but the first lazy > >> component > >> >> is > >> >> >> not loaded. > >> >> >> > >> >> >> Also, the stop script breaks ajax indicators (both from lazy > >> >> components > >> >> >> and indicating links). Exceptions still are present, but page > >> isn't > >> >> >> crashing. > >> >> >> > >> >> >> So far the closest solution was using BookmarkablePageLink, > but > >> it > >> >> is > >> >> >> not ajax and it is just a workaround. > >> >> >> > >> >> >> Isn't there a way to prevent Wicket from handling "old" ajax > >> >> requests? > >> >> >> I assume that's how it should work with DROP channel. > >> >> >> > >> >> >> Best regards, > >> >> >> Michal Wegrzyn > >> >> >> > >> >> >> > -----Original Message----- > >> >> >> > From: Martin Grigorov [mailto:mgrigo...@apache.org] > >> >> >> > Sent: Thursday, November 03, 2011 17:54 > >> >> >> > To: users@wicket.apache.org > >> >> >> > Subject: Re: abort loading lazy components > >> >> >> > > >> >> >> > Here is something that I didn't know so far: > >> >> >> > http://stackoverflow.com/questions/930237/javascript-cancel- > >> stop- > >> >> >> image- > >> >> >> > requests/1468452#1468452 > >> >> >> > > >> >> >> > It seems there is a way to simulate browser's stop button > with > >> >> >> > JavaScript. > >> >> >> > Try to use that code from > IAjaxCallDecorator#decorateScript() > >> for > >> >> >> your > >> >> >> > AjaxLink. > >> >> >> > > >> >> >> > On Thu, Nov 3, 2011 at 3:00 PM, Michal Wegrzyn > >> >> >> > <michal.wegr...@onior.com> wrote: > >> >> >> > > I've just debugged and indeed problem is that there is no > >> >> component > >> >> >> > with id "29". > >> >> >> > > So clearly Wicket looks for an lazy "children" component > from > >> >> >> > outdated DataView component. > >> >> >> > > > >> >> >> > > Michal > >> >> >> > > > >> >> >> > >> -----Original Message----- > >> >> >> > >> From: Michal Wegrzyn [mailto:michal.wegr...@onior.com] > >> >> >> > >> Sent: Wednesday, November 02, 2011 16:11 > >> >> >> > >> To: users@wicket.apache.org > >> >> >> > >> Subject: RE: abort loading lazy components > >> >> >> > >> > >> >> >> > >> It is triggered when there is already new "itemList" (it > >> >> extends > >> >> >> > >> DataView), so I suppose that > >> >> >> > >> PageAndComponentProvider looks for "itemList:29", which > does > >> >> not > >> >> >> > exists > >> >> >> > >> anymore. > >> >> >> > >> > >> >> >> > >> Scenario: > >> >> >> > >> > >> >> >> > >> - Page is loaded but lazy components > >> >> >> > >> > ('folders:listContainer:itemList:itemPanel:folder:children') > >> >> are > >> >> >> > still > >> >> >> > >> loading > >> >> >> > >> - User triggers folder change (itemList is replaced) > >> >> >> > >> - Exception occurs > >> >> >> > >> > >> >> >> > >> If user triggers folder change when lazy components are > >> >> completely > >> >> >> > >> loaded (or during loading the last one) there is no > >> exception > >> >> at > >> >> >> > all. > >> >> >> > >> > >> >> >> > >> Best Regards, > >> >> >> > >> Michal Wegrzyn > >> >> >> > >> > >> >> >> > >> -----Original Message----- > >> >> >> > >> From: Martin Grigorov [mailto:mgrigo...@apache.org] > >> >> >> > >> Sent: Wednesday, November 02, 2011 15:54 > >> >> >> > >> To: users@wicket.apache.org > >> >> >> > >> Subject: Re: abort loading lazy components > >> >> >> > >> > >> >> >> > >> On Wed, Nov 2, 2011 at 4:49 PM, Michal Wegrzyn > >> >> >> > >> <michal.wegr...@onior.com> wrote: > >> >> >> > >> > 15:32:24.028 user [http-8888-5] ERROR > >> >> >> > >> o.a.wicket.DefaultExceptionMapper - Unexpected error > >> occurred > >> >> >> > >> > > >> org.apache.wicket.request.handler.ComponentNotFoundException: > >> >> >> > Could > >> >> >> > >> not find component > >> >> >> > >> > >> 'folders:listContainer:itemList:29:itemPanel:folder:children' > >> >> on > >> >> >> > page > >> >> >> > >> 'class package.MyPage > >> >> >> > >> > >> >> >> > >> Do you know how this is triggered ? > >> >> >> > > > >> >> >> > > > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > -- > >> >> >> > Martin Grigorov > >> >> >> > jWeekend > >> >> >> > Training, Consulting, Development > >> >> >> > http://jWeekend.com > >> >> >> > > >> >> >> > ------------------------------------------------------------ > --- > >> --- > >> >> --- > >> >> >> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> >> >> > For additional commands, e-mail: users- > h...@wicket.apache.org > >> >> > > >> >> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Martin Grigorov > >> >> jWeekend > >> >> Training, Consulting, Development > >> >> http://jWeekend.com > >> >> > >> >> ----------------------------------------------------------------- > --- > >> - > >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> >> For additional commands, e-mail: users-h...@wicket.apache.org > >> > > >> > > >> > >> > >> > >> -- > >> Martin Grigorov > >> jWeekend > >> Training, Consulting, Development > >> http://jWeekend.com > >> > >> -------------------------------------------------------------------- > - > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> For additional commands, e-mail: users-h...@wicket.apache.org > > > > > > > > -- > Martin Grigorov > jWeekend > Training, Consulting, Development > http://jWeekend.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org