Re: AbstractDefaultAjaxBehavior using onComponentRendered rendered many times

2010-01-14 Thread Pedro Santos
Hi Esteban, the wicket javascript will update your component html by the on
retrieved by your component that has the script tag attached. So you get the
problem describe. If you want to keep sending the java script by script tag,
you can implement your onComponentRendered method like:

if (AjaxRequestTarget.get() != null){
  AjaxRequestTarget.get().appendJavascript(var foo = new
Wicket.ExtensibleChoiceAutocomplete ...);
} else {
  cResponse.write(JavascriptUtils.SCRIPT_OPEN_TAG);
  cResponse.write(var foo = new Wicket.ExtensibleChoiceAutocomplete ...);
  cResponse.write(JavascriptUtils.SCRIPT_CLOSE_TAG);
}

but the best approach is to send your behavior javascript to browser adding
it to the IHeaderResponse like:

response.renderOnDomReadyJavascript(var foo = new
Wicket.ExtensibleChoiceAutocomplete ...);

you can do it overriding the renderHead method, because AbstractBehavior
implements IHeaderContributor

On Wed, Jan 13, 2010 at 5:34 PM, Esteban Masoero
emaso...@getsense.com.arwrote:

 Hi:

 Using wicket 1.3.5, I have a MyAbstractExtensibleChoiceAutocompleteBehavior
 (that extends AbstractDefaultAjaxBehavior, and I think it is a modification
 of some wicket class) related to the autocomplete feature that inside
 onComponentRendered method does something like:

 cResponse.write(JavascriptUtils.SCRIPT_OPEN_TAG);
 cResponse.write(var foo = new Wicket.ExtensibleChoiceAutocomplete ...);
 cResponse.write(JavascriptUtils.SCRIPT_CLOSE_TAG);

 Then I have a MyTextField subclass that adds this behavior to itself when
 it's constructed, so the autocomplete options are shown properly.
 MyTextField also adds to itself an
 AjaxFormComponentUpdatingBehavior(onchange) so we can track the changes
 and do some stuff.

 So here's the thing, I noticed with firebug that every time I change the
 component's value and the AjaxFormComponentUpdatingBehavior is called,
 MyTextField is refreshed (added to the target) and the onComponentRendered
 method of the other behavior is called, and the js tag is added to the one
 that previously existed. So I have:

 script type=text/javascript...//script
 script type=text/javascript...//script

 ...and everytime I change the component's value, one line is added. From
 what I saw in Wicket.ExtensibleChoiceAutocomplete class, It shouldn't have
 negative effects, however, I also think it's not a desired effect.
 Can anyone tell me if this is normal or I'm doing something wrong or
 whether I shouldn't worry at all?

 Thanks,

 Esteban

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




-- 
Pedro Henrique Oliveira dos Santos


AbstractDefaultAjaxBehavior using onComponentRendered rendered many times

2010-01-13 Thread Esteban Masoero

Hi:

Using wicket 1.3.5, I have a 
MyAbstractExtensibleChoiceAutocompleteBehavior (that extends 
AbstractDefaultAjaxBehavior, and I think it is a modification of some 
wicket class) related to the autocomplete feature that inside 
onComponentRendered method does something like:


cResponse.write(JavascriptUtils.SCRIPT_OPEN_TAG);
cResponse.write(var foo = new Wicket.ExtensibleChoiceAutocomplete ...);
cResponse.write(JavascriptUtils.SCRIPT_CLOSE_TAG);

Then I have a MyTextField subclass that adds this behavior to itself 
when it's constructed, so the autocomplete options are shown properly.
MyTextField also adds to itself an 
AjaxFormComponentUpdatingBehavior(onchange) so we can track the 
changes and do some stuff.


So here's the thing, I noticed with firebug that every time I change the 
component's value and the AjaxFormComponentUpdatingBehavior is called, 
MyTextField is refreshed (added to the target) and the 
onComponentRendered method of the other behavior is called, and the js 
tag is added to the one that previously existed. So I have:


script type=text/javascript...//script
script type=text/javascript...//script

...and everytime I change the component's value, one line is added. From 
what I saw in Wicket.ExtensibleChoiceAutocomplete class, It shouldn't 
have negative effects, however, I also think it's not a desired effect.
Can anyone tell me if this is normal or I'm doing something wrong or 
whether I shouldn't worry at all?


Thanks,

Esteban

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org