> It did.. You could try the isTemporary (return true) on the behavior, it

thanks nino... that *is* the solution, works like a charm

my mistake for not paying attention to the last bits of the javadoc
ibehavior page :)

"boolean isTemporary()

    Specifies whether or not this behavior is temporary. Temporary
behaviors are removed at the end of request. Such behaviors are useful
for modifying component rendering only when it renders next. Usecases
include javascript effects, initial clientside dom setup, etc. "

... couldn't be more clear...

cheers,

francisco

On Thu, Nov 6, 2008 at 2:22 PM, Nino Saturnino Martinez Vazquez Wael
<[EMAIL PROTECTED]> wrote:
> Hi Francisco
>
> It did.. You could try the isTemporary (return true) on the behavior, it
> could mean that it will only add the behavior for that request, but I am not
> sure.. Or you could try creating a new markupcontainer
> (listOfCommentsContainer), it'll give it a new id..
>
> Or you could stuff in some logic as a ajaxcalldecorator on your link, that
> will clean it up in pure js...
>
> I had some difficulties with exactly this when I did the wicket reaction
> game.
>
> I hope this helpes..
>
> francisco treacy wrote:
>>>
>>> want to not output the list with wicket's ordinary ajax replace method?
>>>
>>
>> hmmm... wicket's ordinary ajax replace method?
>>
>> the basic problem here is:
>> -when the page is first rendered, the following is added to the dom
>> (it's the behaviour responsible for this):
>>
>> $('#numberOfCommentsLink24').click(function() {
>> $('#listOfCommentsContainer25').slideToggle(450); })
>>
>> -when i click on the "trigger" link (numberOfCommentsLink24) i fire an
>> ajax request, and add a webmarkupcontainer (listOfCommentsContainer25)
>> i want to "refresh":
>>
>> target.addComponent(listOfCommentsContainer);
>>
>> -the ajax response is: *not only* the updated
>> listOfCommentsContainer25, but *also* an <evaluate> section in the
>> ajax response, that includes:
>>
>> $('#numberOfCommentsLink24').click(function() {
>> $('#listOfCommentsContainer25').slideToggle(450); })
>>
>> (of course, because the behaviour has been added to the
>> listOfCommentsContainer).
>>
>>
>> -... that means, i now have loaded in the dom *twice* :
>>
>> $('#numberOfCommentsLink24').click(function() {
>> $('#listOfCommentsContainer25').slideToggle(450); })
>>
>> so with *one* click on the numberOfCommentsLink24 , i get *two* calls
>> to  $('#listOfCommentsContainer25').slideToggle(450);
>>
>> which basically slides up, and immediately down. that is, slide toggle
>> means it goes up (hides) if it was down (visible), it goes down
>> (shows) if it was up (hidden).
>>
>> i want to avoid this behaviour by stopping the ajax response from
>> spitting back the javascript code for a second time. perhaps do
>> something inside the behaviour class?
>>
>> hope it clarifies! thanks,
>>
>> francisco
>>
>>
>>
>> On Thu, Nov 6, 2008 at 1:53 PM, Nino Saturnino Martinez Vazquez Wael
>> <[EMAIL PROTECTED]> wrote:
>>
>>>
>>> Im not sure I understand then..? Could you explain another way? You would
>>> want to not output the list with wicket's ordinary ajax replace method?
>>>
>>> francisco treacy wrote:
>>>
>>>>
>>>> yes, i'm aware of those. but i'd want to 'remove' things from the
>>>> ajaxRequestTarget rather than append...
>>>>
>>>> or, some way of attaching/executing behaviours only once?
>>>>
>>>>
>>>> On Thu, Nov 6, 2008 at 12:58 PM, Nino Saturnino Martinez Vazquez Wael
>>>> <[EMAIL PROTECTED]> wrote:
>>>>
>>>>
>>>>>
>>>>> theres a prepend / append js on ajaxRequestTarget, that should work...
>>>>>
>>>>> francisco treacy wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> hi,
>>>>>>
>>>>>> we're using a home-grown wrapper for integrating jquery into wicket -
>>>>>> specifically for jquery effects.
>>>>>>
>>>>>> and i'm having some trouble with ajax updates. i'll explain with an
>>>>>> example:
>>>>>>
>>>>>>
>>>>>> final WebMarkupContainer listOfCommentsContainer = new
>>>>>> WebMarkupContainer("listOfCommentsContainer");
>>>>>> listOfCommentsContainer.setOutputMarkupId(true);
>>>>>> add(listOfCommentsContainer);
>>>>>>
>>>>>> AjaxLink<Void> numberOfCommentsLink = new
>>>>>> AjaxLink<Void>("numberOfCommentsLink") {
>>>>>>                      @Override
>>>>>>                      public void onClick(AjaxRequestTarget target) {
>>>>>>
>>>>>>  target.addComponent(listOfCommentsContainer);
>>>>>>                      }
>>>>>>              };
>>>>>>
>>>>>> listOfCommentsContainer.add(new JQueryEffectBehavior(new
>>>>>> SlideToggleEffect(), numberOfCommentsLink));
>>>>>>
>>>>>> add(numberOfCommentsLink);
>>>>>>
>>>>>> this code is basically outputting something like:
>>>>>>
>>>>>> <script type="text/javascript" ><!--/*--><![CDATA[/*><!--*/
>>>>>> Wicket.Event.add(window, "domready", function() {
>>>>>> $('#numberOfCommentsLink24').click(function() {
>>>>>> $('#listOfCommentsContainer25').slideToggle(450); }) ;});
>>>>>> /*-->]]>*/</script>
>>>>>>
>>>>>> listOfCommentsContainer25 being the target container to slide,
>>>>>> numberOfCommentsLink24 the trigger.
>>>>>>
>>>>>> this works fine per se. now when i click on numberOfCommentsLink24 ,
>>>>>> my list is refreshed (added it to the ajaxrequesttarget) and the
>>>>>> effect behaviour outputting javascript code again...
>>>>>>
>>>>>> <ajax-response><header-contribution><![CDATA[<head
>>>>>> xmlns:wicket="http://wicket.apache.org";><script type="text/javascript"
>>>>>>
>>>>>>
>>>>>>
>>>>>> src="resources/hub.app.wicket.components.jquery.JQueryResourceReference/jquery-1.2.6.js"></script>
>>>>>> <script type="text/javascript"
>>>>>>
>>>>>>
>>>>>>
>>>>>> src="resources/hub.app.wicket.components.jquery.JQueryEffectCoreResourceReference/jquery-1.2.6.effects.core.js"></script>
>>>>>> </head>]]></header-contribution>
>>>>>> (...)
>>>>>> <evaluate><![CDATA[$('#numberOfCommentsLink24').click(function() {
>>>>>> $('#listOfCommentsContainer25').slideToggle(450); })
>>>>>> ]]></evaluate></ajax-response>
>>>>>>
>>>>>> which means that i can visually perceive a very quick slideDown
>>>>>> followed by a slideUp (this is the normal slideToggle functionality).
>>>>>>
>>>>>> is there a way not to include the <evaluate> part?  or detect if the
>>>>>> component has already been rendered in markup to check whether to
>>>>>> execute the behaviour again?
>>>>>> perhaps i'm missing some basic point here... any suggestions?
>>>>>>
>>>>>> thanks in advance,
>>>>>>
>>>>>> francisco
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> -Wicket for love
>>>>>
>>>>> Nino Martinez Wael
>>>>> Java Specialist @ Jayway DK
>>>>> http://www.jayway.dk
>>>>> +45 2936 7684
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>
>>> --
>>> -Wicket for love
>>>
>>> Nino Martinez Wael
>>> Java Specialist @ Jayway DK
>>> http://www.jayway.dk
>>> +45 2936 7684
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> --
> -Wicket for love
>
> Nino Martinez Wael
> Java Specialist @ Jayway DK
> http://www.jayway.dk
> +45 2936 7684
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to