You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by caarney <cr...@centrum.cz> on 2008/01/02 17:10:32 UTC

Re: EventListener on components within a @For loop

Is anyone using this workaround on Tapestry 4.1.3? I'm getting some dojo
JavaScript error ("o[i] has no properties"), but it seems to work on Tap.
4.1.2.



Christian Dutaret-3 wrote:
> 
> I found a nice solution using dojo's ability to listen to an arbitrary
> javascript function as if it were a native event.
> I attach an empty js function to an arbitrary DOM element like this:
> 
> document.getElementById('someDiv').clickRadio=function(radio) {};
> 
> and an onclick attribute to my radio buttons:
> 
> 
> 
> Then I can set an EventListener on the server-side
> 
>     @EventListener(targets = "someDiv", events = "clickRadio", submitForm
> =
> "form")
>     public void listenToOnclickOnAnyRadioButtonInTheForLoop(IRequestCycle
> cycle) throws InterruptedException {
>         ...
>     }
> 
> Works fine.
> Ch.
> 
> 
> 2006/10/3, Dennis Sinelnikov <de...@augustschell.com>:
>>
>> I'm glad someone else has a need for this as well.  From doing a little
>> bit of research the other day, I found @EventListener annotation that
>> was introduced into tapestry 4.1+ that "sort of" fixes the problem. I'm
>> currently using stable release of tapestry 4.0.2, so I didn't bother
>> going that route. I believe this can be accomplished with tacos, but not
>> sure.  If you find something I would love to see an example, I'll do the
>> same as well...
>>
>> Good Luck,
>> Dennis
>>
>> Christian Dutaret wrote:
>> > Hi,
>> >
>> > Is it possible to have an EventListener for events on components within
>> a
>> > @For loop? Typically, I have a set of radio buttons, which are rendered
>> > from
>> > @Radio components within a @For loop (with a surrounding @RadioGroup
>> > component), and I want to invoke a listener whenever an onclick event
>> > occurs
>> > on any of those radio buttons.
>> > I could achieve this with @contrib:XTile components, but I'd rather use
>> the
>> > same programming model everywhere. It would be nice, for instance, to
>> > set an
>> > EvenListener on the @RadioGroup component, and have it propagate the
>> event
>> > on nested @Radio components.
>> >
>> > Thx
>> > Ch.
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/EventListener-on-components-within-a-%40For-loop-tp6619986p14580875.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: EventListener on components within a @For loop

Posted by Christian Dutaret <cd...@gmail.com>.
I still use this workaround.
To have it work with T4.1.3, I think you just need to set the event on a
form component (I use the submit button).

dojo.byId('submit').ajaxEvent=function(json) {};

then :

@EventListener(targets = "submit", events = "ajaxEvent")
public void onAjaxEvent(IRequestCycle cycle, BrowserEvent event) {
    ...
}

The json parameter can be used to retrieve which iteration in the For loop
initiated the event :

@EventListener(targets = "submit", events = "ajaxEvent")
public void onAjaxEvent(IRequestCycle cycle, BrowserEvent event) {
    int id = event.getMethodArguments().getJSONObject(0).getInt("id");
    ...
}

HTH
Ch.


2008/1/2, caarney <cr...@centrum.cz>:
>
>
> Is anyone using this workaround on Tapestry 4.1.3? I'm getting some dojo
> JavaScript error ("o[i] has no properties"), but it seems to work on Tap.
> 4.1.2.
>
>
>
> Christian Dutaret-3 wrote:
> >
> > I found a nice solution using dojo's ability to listen to an arbitrary
> > javascript function as if it were a native event.
> > I attach an empty js function to an arbitrary DOM element like this:
> >
> > document.getElementById('someDiv').clickRadio=function(radio) {};
> >
> > and an onclick attribute to my radio buttons:
> >
> >
> >
> > Then I can set an EventListener on the server-side
> >
> >     @EventListener(targets = "someDiv", events = "clickRadio",
> submitForm
> > =
> > "form")
> >     public void
> listenToOnclickOnAnyRadioButtonInTheForLoop(IRequestCycle
> > cycle) throws InterruptedException {
> >         ...
> >     }
> >
> > Works fine.
> > Ch.
> >
> >
> > 2006/10/3, Dennis Sinelnikov <de...@augustschell.com>:
> >>
> >> I'm glad someone else has a need for this as well.  From doing a little
> >> bit of research the other day, I found @EventListener annotation that
> >> was introduced into tapestry 4.1+ that "sort of" fixes the problem. I'm
> >> currently using stable release of tapestry 4.0.2, so I didn't bother
> >> going that route. I believe this can be accomplished with tacos, but
> not
> >> sure.  If you find something I would love to see an example, I'll do
> the
> >> same as well...
> >>
> >> Good Luck,
> >> Dennis
> >>
> >> Christian Dutaret wrote:
> >> > Hi,
> >> >
> >> > Is it possible to have an EventListener for events on components
> within
> >> a
> >> > @For loop? Typically, I have a set of radio buttons, which are
> rendered
> >> > from
> >> > @Radio components within a @For loop (with a surrounding @RadioGroup
> >> > component), and I want to invoke a listener whenever an onclick event
> >> > occurs
> >> > on any of those radio buttons.
> >> > I could achieve this with @contrib:XTile components, but I'd rather
> use
> >> the
> >> > same programming model everywhere. It would be nice, for instance, to
> >> > set an
> >> > EvenListener on the @RadioGroup component, and have it propagate the
> >> event
> >> > on nested @Radio components.
> >> >
> >> > Thx
> >> > Ch.
> >> >
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/EventListener-on-components-within-a-%40For-loop-tp6619986p14580875.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>