[
https://issues.apache.org/jira/browse/WICKET-4959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13548462#comment-13548462
]
Sven Meier commented on WICKET-4959:
------------------------------------
Problem is that MarkupContainer#replace() (#742) copies the markupId from the
panel with the behavior (ClockPanel) onto the panel without (EmptyPanel):
// The generated markup id remains the same
child.setMarkupId(replaced);
Thus the next pending Ajax request comes through, since wicket-ajax's
defaultPrecondition sees the markupId still present in the dom.
> Unproperly detached Behavior with TabbedPanels
> ----------------------------------------------
>
> Key: WICKET-4959
> URL: https://issues.apache.org/jira/browse/WICKET-4959
> Project: Wicket
> Issue Type: Bug
> Components: wicket-extensions
> Affects Versions: 6.4.0
> Reporter: Paul
> Priority: Minor
> Attachments: quickstart.zip
>
>
> I use a AjaxTabbedPanel on my page and run into the following problem:
> If there is an Behavior (AjaxSelfUpdatingTimer or AbstractAjaxTimerBehavior)
> attached to one of the panels and the panel is replaced by another panel, the
> AjaxBehavior is not properly removed and deactivated. After the idle-duration
> the JS calls in and Wicket throws an exception due to the missing behavior.
> Stacktrace:
> ERROR - DefaultExceptionMapper - Unexpected error occurred
> org.apache.wicket.behavior.InvalidBehaviorIdException: Cannot find behavior
> with id '0' on component
> 'org.apache.wicket.markup.html.panel.EmptyPanel:tabs:panel' in page '[Page
> class = com.wicket.HomePage, id = 0, render count = 4]'. 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:303)
> at org.apache.wicket.Component.getBehaviorById(Component.java:4483)
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:246)
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226)
> ...
> I attached a quickstart showing the problem. Simply take a look at second tab
> and then go back to the first tab and you run into this problem.
> There is a workaround for this: If you attach the behavior to a component of
> the panel (i.e. the clock) this error doesn't occur.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira