You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Tom Wollert <to...@googlemail.com> on 2009/08/30 23:55:25 UTC
How to tackle Ajax "Flooding"
Hello there,
I have a problem with my Wicket Application, which is quite Ajax heavy.
Certain ajax calls take some time as they start an import, however the
button can still be clicked and sends another ajax call (which is delayed
for quite some time). Is it possible to disable the button while the request
cycle is not complete? (I mean with wicket, or do I need to use
Javascript?). Also ajax calls are postponed as long as the channel is busy,
is it possible to deactivate this behaviour? And are there reasons why I
should not?
Re: How to tackle Ajax "Flooding"
Posted by Pedro Santos <pe...@gmail.com>.
- area where the user sends multiple requests in very rapid succession
- model on client side
- alot of javascript
Do you consider to choice an diferent framework for thi especific project?
Take a look at:
http://ptrthomas.wordpress.com/2008/09/04/wicket-and-gwt-compared-with-code/
On Mon, Aug 31, 2009 at 9:47 AM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:
> Heh, the whole idea with ajax are that it are asynchronous :)
>
> 2009/8/31 Tom Wollert <to...@googlemail.com>:
> > The only idea I can come up with is to keep state of my model on client
> > side, but that would require alot of javascript :/
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: How to tackle Ajax "Flooding"
Posted by nino martinez wael <ni...@gmail.com>.
Heh, the whole idea with ajax are that it are asynchronous :)
2009/8/31 Tom Wollert <to...@googlemail.com>:
> The only idea I can come up with is to keep state of my model on client
> side, but that would require alot of javascript :/
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: How to tackle Ajax "Flooding"
Posted by smallufo <sm...@gmail.com>.
Wow , thanks for this great tip ...
But I have problem applying to Gmap2 :
I hope when user clicks the map , the map won't be able to receive any
requests until the onClick() finishes...
But it seems this doesn't work...
Is there anything I missed ?
gmap2.add(new ClickListener()
{
@Override
protected void onClick(AjaxRequestTarget target, GLatLng latLng, GOverlay
overlay)
{
// high computation ...
}
@Override
protected IAjaxCallDecorator getAjaxCallDecorator()
{
return new IAjaxCallDecorator()
{
@Override
public CharSequence decorateScript(CharSequence script)
{ return "this.enabled=false;"+script; }
@Override
public CharSequence decorateOnSuccessScript(CharSequence script)
{ return script+";this.enabled=true;"; }
@Override
public CharSequence decorateOnFailureScript(CharSequence script)
{ return script+";this.enabled=true;"; }
};
}
});
2009/8/31 Igor Vaynberg <ig...@gmail.com>
> add(new ajaxbutton("button") {
> getajaxcalldecorator() {
> return new iajaxcalldecorator() {
> decoratescript(script) { "return this.enabled=false;"+script; }
> decorateonfailurescript(script) { return
> script+";this.enabled=true;";}
> decorateonsuccessscript(script) { return
> script+";this.enabled=true;";}
> }
> }
> }
>
> doesnt look like a lot of javascript to me. further you can factor it
> out into a separate class and reuse it all over the place.
>
> -igor
>
>
> On Mon, Aug 31, 2009 at 5:40 AM, Tom Wollert<to...@googlemail.com>
> wrote:
> > The only idea I can come up with is to keep state of my model on client
> > side, but that would require alot of javascript :/
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: How to tackle Ajax "Flooding"
Posted by Igor Vaynberg <ig...@gmail.com>.
add(new ajaxbutton("button") {
getajaxcalldecorator() {
return new iajaxcalldecorator() {
decoratescript(script) { "return this.enabled=false;"+script; }
decorateonfailurescript(script) { return script+";this.enabled=true;";}
decorateonsuccessscript(script) { return script+";this.enabled=true;";}
}
}
}
doesnt look like a lot of javascript to me. further you can factor it
out into a separate class and reuse it all over the place.
-igor
On Mon, Aug 31, 2009 at 5:40 AM, Tom Wollert<to...@googlemail.com> wrote:
> The only idea I can come up with is to keep state of my model on client
> side, but that would require alot of javascript :/
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: How to tackle Ajax "Flooding"
Posted by Tom Wollert <to...@googlemail.com>.
The only idea I can come up with is to keep state of my model on client
side, but that would require alot of javascript :/
Re: How to tackle Ajax "Flooding"
Posted by Tom Wollert <to...@googlemail.com>.
Thanks for the replies, so I have to write my own Javascript... no problem
I guess, was hoping for a "cleaner" way so to speak.
Any idea about disabling the postponing when the ajax channel is busy?
Specifically I have on my website an area where the user sends multiple
requests in very rapid succession. The way it is now all the requests
simultaneously? Right now the responses come with an awkward delay right
now. Any idea how to solve this elegantly?
2009/8/31 nino martinez wael <ni...@gmail.com>
> Is it something like this?
>
> http://www.nabble.com/No-behavior-listener-found-td20325302.html
>
> 2009/8/30 Tom Wollert <to...@googlemail.com>:
> > Hello there,
> >
> > I have a problem with my Wicket Application, which is quite Ajax heavy.
> > Certain ajax calls take some time as they start an import, however the
> > button can still be clicked and sends another ajax call (which is delayed
> > for quite some time). Is it possible to disable the button while the
> request
> > cycle is not complete? (I mean with wicket, or do I need to use
> > Javascript?). Also ajax calls are postponed as long as the channel is
> busy,
> > is it possible to deactivate this behaviour? And are there reasons why I
> > should not?
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: How to tackle Ajax "Flooding"
Posted by nino martinez wael <ni...@gmail.com>.
Is it something like this?
http://www.nabble.com/No-behavior-listener-found-td20325302.html
2009/8/30 Tom Wollert <to...@googlemail.com>:
> Hello there,
>
> I have a problem with my Wicket Application, which is quite Ajax heavy.
> Certain ajax calls take some time as they start an import, however the
> button can still be clicked and sends another ajax call (which is delayed
> for quite some time). Is it possible to disable the button while the request
> cycle is not complete? (I mean with wicket, or do I need to use
> Javascript?). Also ajax calls are postponed as long as the channel is busy,
> is it possible to deactivate this behaviour? And are there reasons why I
> should not?
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: How to tackle Ajax "Flooding"
Posted by Michael O'Cleirigh <mi...@rivulet.ca>.
Hi Tom,
It sounds like you are doing too much in your heavy Ajax requests. You
should consider changing how it works so that the process can be started
by the Ajax request but does not need to block other ajax requests while
waiting for the results. You can use a progress bar to denote to the
user that something is happening and then once the work is done allow
them to access it (say through a link that is only visible when the
request is completed).
Others have mentioned the javascript client side checks but I like the
server side approach since all the context is already present to make
the decision on what to do with the Ajax call.
Regards,
Mike
>
> I have a problem with my Wicket Application, which is quite Ajax heavy.
> Certain ajax calls take some time as they start an import, however the
> button can still be clicked and sends another ajax call (which is delayed
> for quite some time). Is it possible to disable the button while the request
> cycle is not complete? (I mean with wicket, or do I need to use
> Javascript?). Also ajax calls are postponed as long as the channel is busy,
> is it possible to deactivate this behaviour? And are there reasons why I
> should not?
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: How to tackle Ajax "Flooding"
Posted by Jason Wang <ja...@bulletin.net>.
Tom Wollert wrote:
> Hello there,
>
> I have a problem with my Wicket Application, which is quite Ajax heavy.
> Certain ajax calls take some time as they start an import, however the
> button can still be clicked and sends another ajax call (which is delayed
> for quite some time). Is it possible to disable the button while the request
> cycle is not complete? (I mean with wicket, or do I need to use
> Javascript?). Also ajax calls are postponed as long as the channel is busy,
> is it possible to deactivate this behaviour? And are there reasons why I
> should not?
>
>
Normally I guess we do not want to do that (disabling all the other
buttons ,etc). Often the reason we use ajax is to make the user requests
handled asynchronysly. But for something that really critical like
handling credit card payment, I think its still a good idea to disable
any other actions on the same page.
I did not have this problem(flooding) myself, but I think you may
consider using a "event bus" to tackle it. So all the ajax events are
queued into the bus then handled by your server layer when it can. Plus
you will have the benefits to have a centralized place to prioritize the
events, doing some sort of load balancing.
Jason Wang
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: How to tackle Ajax "Flooding"
Posted by Igor Vaynberg <ig...@gmail.com>.
you can use an ajax call decorator to disable the button via
javascript when it is clicked.
-igor
On Sun, Aug 30, 2009 at 2:55 PM, Tom Wollert<to...@googlemail.com> wrote:
> Hello there,
>
> I have a problem with my Wicket Application, which is quite Ajax heavy.
> Certain ajax calls take some time as they start an import, however the
> button can still be clicked and sends another ajax call (which is delayed
> for quite some time). Is it possible to disable the button while the request
> cycle is not complete? (I mean with wicket, or do I need to use
> Javascript?). Also ajax calls are postponed as long as the channel is busy,
> is it possible to deactivate this behaviour? And are there reasons why I
> should not?
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org