[ 
https://issues.apache.org/jira/browse/WICKET-6022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14996170#comment-14996170
 ] 

Paul commented on WICKET-6022:
------------------------------

I siglthly disagree. The problem only occurs if the timer (with the changed 
ajax chanel) is in a nested component. So if the direct parent of the ajax 
timer is removed, everything is fine. I suspect there is a missing recursion 
into the children of the removed component.

Additionally I found today another problem:
I removed in my quickstart every change of the Ajax-Chanels (TimerPanel.java 
line 36 and HomePage.java line 57), everything works fine, but if I attach the 
timer directly to the TimerPanel I get the following stacktrace 

{quote}
Root cause:

org.apache.wicket.behavior.InvalidBehaviorIdException: Cannot find behavior 
with id '0' on component 'org.apache.wicket.markup.html.panel.EmptyPanel:panel' 
in page '[Page class = com.mycompany.HomePage, id = 4, render count = 1]'. 
Perhaps the behavior did not properly implement getStatelessHint() and returned 
'true' to indicate that it is stateless instead of returning 'false' to 
indicate that it is stateful.
     at org.apache.wicket.Behaviors.getBehaviorById(Behaviors.java:316)
     at org.apache.wicket.Component.getBehaviorById(Component.java:4477)
     at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:249)
     at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
     at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
     at 
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
     at 
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
     at 
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
     at 
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
     at 
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
     at 
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
     at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
     at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
     at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443)
     at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
     at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556)
     at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
     at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)
     at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)
     at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
     at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)
     at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
     at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
     at org.eclipse.jetty.server.Server.handle(Server.java:369)
     at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)
     at 
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
     at 
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:933)
     at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:995)
     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
     at 
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
     at 
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
     at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
     at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
     at java.lang.Thread.run(Unknown Source)
{quote}

> ComponentNotFoundException using AbstractAjaxTimerBehavior and different 
> AjaxChanels
> ------------------------------------------------------------------------------------
>
>                 Key: WICKET-6022
>                 URL: https://issues.apache.org/jira/browse/WICKET-6022
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.20.0
>            Reporter: Paul
>            Assignee: Sven Meier
>            Priority: Minor
>         Attachments: quickstart.zip
>
>
> I've got the following problem:
> I use several Ajax-Channels for my Project. When an AbstractAjaxTimerBehavior 
> is attached to a element which is later removed via Ajax, I get a little 
> later a RuntimeException, as the Timer is still active, but has no Component 
> left attached to the page.
> I attached a Quickstart demonstrating this problem. If you leave the 
> AjaxChannel as it is, you won't have the problem, as the timers are stopped 
> upon removal of the component the timer is attached to. But if the name of 
> the channel differs from the default value, this problem occurs.
> Cheers
> Paul
> {quote}
> Stacktrace:
> Root cause:
> org.apache.wicket.core.request.handler.ComponentNotFoundException: Component 
> 'panel:timer' has been removed from page.
>      at 
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:178)
>      at 
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
>      at 
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>      at 
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
>      at 
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
>      at 
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
>      at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
>      at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443)
>      at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>      at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556)
>      at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
>      at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)
>      at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)
>      at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
>      at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)
>      at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>      at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>      at org.eclipse.jetty.server.Server.handle(Server.java:369)
>      at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)
>      at 
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>      at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:933)
>      at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:995)
>      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
>      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>      at 
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>      at 
> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
>      at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>      at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>      at java.lang.Thread.run(Unknown Source)
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to