[
https://issues.apache.org/jira/browse/WICKET-4257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13192947#comment-13192947
]
Marc Nuri commented on WICKET-4257:
-----------------------------------
The bug happens whenever the submitlink is double clicked, as a workaround you
can override AjaxSubmitLink with the following code to temporarily disable
onclick until the first event is totally processed:
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new AjaxCallDecorator() {
@Override
public CharSequence decorateScript(Component c,
CharSequence script) {
return String.format(
//Store the old function in
onclick_
"this.onclick_disabled=this.onclick;"
//Substitute onclick function
+ " this.onclick=function() {
return false; };%s", script);
}
@Override
public CharSequence
decorateOnSuccessScript(Component c, CharSequence script) {
return String.format(
//Restore old function
"if (typeof(this.onclick_disabled)
!= 'undefined') this.onclick=this.onclick_disabled;%s",
script);
}
@Override
public CharSequence
decorateOnFailureScript(Component c, CharSequence script) {
return String.format(
//Restore old function
"if (typeof(this.onclick_disabled)
!= 'undefined') this.onclick=this.onclick_disabled;%s",
script);
}
};
}
> Ajax indicator getting stuck when button is pressed multiple times
> ------------------------------------------------------------------
>
> Key: WICKET-4257
> URL: https://issues.apache.org/jira/browse/WICKET-4257
> Project: Wicket
> Issue Type: Bug
> Affects Versions: 1.4.19
> Reporter: Nazaret Kazarian
> Priority: Minor
> Attachments: ajax-indicator.rar
>
>
> http://apache-wicket.1842946.n4.nabble.com/Ajax-busy-indicator-getting-stuck-td4082837.html
> I have added a global ajax indicator to all my pages by having all
> pages (through a TemplatePage superclass) implement the
> IAjaxIndicatorAware interface.
> Generally it works, but I have noticed that it is quite easy to get
> the ajax indicator stuck spinning indefinitely, by issuing many ajax
> calls quickly the one after the other. For example if I press an ajax
> button multiple times quickly the busy indicator gets stuck.
> It seems as if the Wicket.show(hide)Incrementally js functions lose
> count of ajax requests and the busy indicator is never actually
> hidden.
> With a little reverse engineering I noticed that maybe one of the
> cases this happens is this: an ajax button is pressed,
> showIncrementally is executed, but the actual ajax request is
> postponed because its channel is busy. When the time comes to actually
> execute the request, the request is stopped because of precondition
> check, and thus hideIncrementally is never called. This loses the
> count. A fix might be to call hideIncrementally when the ajax request
> precondition is not met. As to why the precondition is not met, I am
> guessing it's because the previous ajax request did DOM replacement in
> a way that the precondition of the queued request is no longer met.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira