Re: @EventListener inside of a component

2006-12-29 Thread Alexandru Dragomir

Perhaps the tapestry.linkOnClick(url,id,isJson) will do the trick.
In the url you can put the info you want to send to the server.

Take a look at the timetracker application for a sample of how to use it.

Cheers,
Alex

On 12/29/06, Roberto Ramírez Vique <[EMAIL PROTECTED]> wrote:


Hello Jesse & Mark,

I am in the same situation as Mark was some time ago, at least I think the
situation is the same. This email is to know if there is any other way to
solve my problem.

I want to have a component which has a simple EventListener to that goes
to
the server and changes some values in the client (typical ajax). The
problem
is that this component doesn't have a form, the component finally will be
inside a form, but is not defined in the component itself and the name of
the form can change.
As far as I understood, we cannot use the nice EventListener to receive
information (value of the input types) from the browser except we specify
the form name, but in my situation the form name will change every time
and
I need to define this as a parameter or have a default value for example
the
enclosing form for the event source...

I think this, maybe, can be done with some javascript, maybe
tapestry.form.submitAsync(form, content, submitName, validate)...But I'm
not
sure.
Another question, is if this can be done in that way?

BTW, I'm working with Tapestry 4.1.2, jdk 1.5 and tomcat 5.5.

Thanks you in advance,
 robert

On 11/25/06, Jesse Kuhnert < [EMAIL PROTECTED]> wrote:
>
> No, it may very well be a bug. I wouldn't be surprised at least. I'm
> still busy trying to refactor/etc the For component to work under
> these "dynamic" conditions a little more friendlier but if a bug is
> filed I will have a much better chance of remembering. (whereas emails
> to this list are only likely to have about a 10-30% chance of being
> fixed unless I run into them myself ;) )
>
> On 11/24/06, Mark Reynolds < [EMAIL PROTECTED]> wrote:
> > After looking at this some more, it seems to me that listener methods
> can't
> > be in components (that is, if a component is contained within another
> > component, the container won't get the event, the page will). I think
I
> was
> > wrong about DirectLink and Submit. In any case, I put my
@EventListener
> on
> > the page class and make a call my component to let it know what
changed.
> I
> > am sure there must be a better way that allows me to encapsulate all
the
> > logic within my component, so if anyone can point me in the right
> direction,
> > that would be great.
> >
> > On 11/24/06, Mark Reynolds < [EMAIL PROTECTED]> wrote:
> > >
> > > I am trying to create a reusuable component that encapsulates the
> > > functionality of two related PropertySelection components.
> > >
> > > I placed an @EventListerner annotation on a method inside of my
> component
> > > class.
> > >
> > > public abstract class MySelection extends BaseComponent {
> > >
> > > @EventListener(events = "onchange", elements = "item",
submitForm
> =
> > > "form")
> > > public void onItemSelected(IRequestCycle cycle, BrowserEvent
> event) {
> > > // do something
> > > }
> > >
> > > 
> > >
> > > }
> > >
> > > I get an exception like this:
> > >
> > > Exception: Object [EMAIL PROTECTED] does not implement a
listener
>
> > > method named 'onItemSelected'.
> > > org.apache.hivemind.ApplicationRuntimeException
> > >
> > > It seems that Tapestry is looking for the method on the page class,
> not in
> > > the embedded component class where the annotated method lives.
> Normally,
> > > when I reference a listener method from within a compoonent (for
> instance on
> > > a DirectLink or a Submit), tapestry will find the listener method on
> the
> > > component class.
> > >
> > > Am I doing something wrong here or might this be a bug?
> > >
> > > Also, in the annotation, I have to specify the name of the form.
> Assuming
> > > I can have an @EventListener annotation inside a component, It seems
a
> bit
> > > awkward for the component to need to know what the name of the form
> happens
> > > to be in which it is enclosed. Is there a dynamic way to specify the
> form?
> > >
> > >
> > >
> >
> >
>
>
> --
> Jesse Kuhnert
> Tapestry/Dojo/(and a dash of TestNG), team member/developer
>
> Open source based consulting work centered around
> dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Robert Ramírez Vique
Computer Science Engineer




Re: @EventListener inside of a component

2006-12-29 Thread Roberto Ramírez Vique

Hello Jesse & Mark,

I am in the same situation as Mark was some time ago, at least I think the
situation is the same. This email is to know if there is any other way to
solve my problem.

I want to have a component which has a simple EventListener to that goes to
the server and changes some values in the client (typical ajax). The problem
is that this component doesn't have a form, the component finally will be
inside a form, but is not defined in the component itself and the name of
the form can change.
As far as I understood, we cannot use the nice EventListener to receive
information (value of the input types) from the browser except we specify
the form name, but in my situation the form name will change every time and
I need to define this as a parameter or have a default value for example the
enclosing form for the event source...

I think this, maybe, can be done with some javascript, maybe
tapestry.form.submitAsync(form, content, submitName, validate)...But I'm not
sure.
Another question, is if this can be done in that way?

BTW, I'm working with Tapestry 4.1.2, jdk 1.5 and tomcat 5.5.

Thanks you in advance,
robert

On 11/25/06, Jesse Kuhnert < [EMAIL PROTECTED]> wrote:


No, it may very well be a bug. I wouldn't be surprised at least. I'm
still busy trying to refactor/etc the For component to work under
these "dynamic" conditions a little more friendlier but if a bug is
filed I will have a much better chance of remembering. (whereas emails
to this list are only likely to have about a 10-30% chance of being
fixed unless I run into them myself ;) )

On 11/24/06, Mark Reynolds < [EMAIL PROTECTED]> wrote:
> After looking at this some more, it seems to me that listener methods
can't
> be in components (that is, if a component is contained within another
> component, the container won't get the event, the page will). I think I
was
> wrong about DirectLink and Submit. In any case, I put my @EventListener
on
> the page class and make a call my component to let it know what changed.
I
> am sure there must be a better way that allows me to encapsulate all the
> logic within my component, so if anyone can point me in the right
direction,
> that would be great.
>
> On 11/24/06, Mark Reynolds < [EMAIL PROTECTED]> wrote:
> >
> > I am trying to create a reusuable component that encapsulates the
> > functionality of two related PropertySelection components.
> >
> > I placed an @EventListerner annotation on a method inside of my
component
> > class.
> >
> > public abstract class MySelection extends BaseComponent {
> >
> > @EventListener(events = "onchange", elements = "item", submitForm
=
> > "form")
> > public void onItemSelected(IRequestCycle cycle, BrowserEvent
event) {
> > // do something
> > }
> >
> > 
> >
> > }
> >
> > I get an exception like this:
> >
> > Exception: Object [EMAIL PROTECTED] does not implement a listener

> > method named 'onItemSelected'.
> > org.apache.hivemind.ApplicationRuntimeException
> >
> > It seems that Tapestry is looking for the method on the page class,
not in
> > the embedded component class where the annotated method lives.
Normally,
> > when I reference a listener method from within a compoonent (for
instance on
> > a DirectLink or a Submit), tapestry will find the listener method on
the
> > component class.
> >
> > Am I doing something wrong here or might this be a bug?
> >
> > Also, in the annotation, I have to specify the name of the form.
Assuming
> > I can have an @EventListener annotation inside a component, It seems a
bit
> > awkward for the component to need to know what the name of the form
happens
> > to be in which it is enclosed. Is there a dynamic way to specify the
form?
> >
> >
> >
>
>


--
Jesse Kuhnert
Tapestry/Dojo/(and a dash of TestNG), team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

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





--
Robert Ramírez Vique
Computer Science Engineer


Re: @EventListener inside of a component

2006-11-24 Thread Jesse Kuhnert

No, it may very well be a bug. I wouldn't be surprised at least. I'm
still busy trying to refactor/etc the For component to work under
these "dynamic" conditions a little more friendlier but if a bug is
filed I will have a much better chance of remembering. (whereas emails
to this list are only likely to have about a 10-30% chance of being
fixed unless I run into them myself ;) )

On 11/24/06, Mark Reynolds <[EMAIL PROTECTED]> wrote:

After looking at this some more, it seems to me that listener methods can't
be in components (that is, if a component is contained within another
component, the container won't get the event, the page will). I think I was
wrong about DirectLink and Submit. In any case, I put my @EventListener on
the page class and make a call my component to let it know what changed. I
am sure there must be a better way that allows me to encapsulate all the
logic within my component, so if anyone can point me in the right direction,
that would be great.

On 11/24/06, Mark Reynolds <[EMAIL PROTECTED]> wrote:
>
> I am trying to create a reusuable component that encapsulates the
> functionality of two related PropertySelection components.
>
> I placed an @EventListerner annotation on a method inside of my component
> class.
>
> public abstract class MySelection extends BaseComponent {
>
> @EventListener(events = "onchange", elements = "item", submitForm =
> "form")
> public void onItemSelected(IRequestCycle cycle, BrowserEvent event) {
> // do something
> }
>
> 
>
> }
>
> I get an exception like this:
>
> Exception: Object [EMAIL PROTECTED] does not implement a listener
> method named 'onItemSelected'.
> org.apache.hivemind.ApplicationRuntimeException
>
> It seems that Tapestry is looking for the method on the page class, not in
> the embedded component class where the annotated method lives. Normally,
> when I reference a listener method from within a compoonent (for instance on
> a DirectLink or a Submit), tapestry will find the listener method on the
> component class.
>
> Am I doing something wrong here or might this be a bug?
>
> Also, in the annotation, I have to specify the name of the form. Assuming
> I can have an @EventListener annotation inside a component, It seems a bit
> awkward for the component to need to know what the name of the form happens
> to be in which it is enclosed. Is there a dynamic way to specify the form?
>
>
>





--
Jesse Kuhnert
Tapestry/Dojo/(and a dash of TestNG), team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

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



Re: @EventListener inside of a component

2006-11-24 Thread Mark Reynolds

After looking at this some more, it seems to me that listener methods can't
be in components (that is, if a component is contained within another
component, the container won't get the event, the page will). I think I was
wrong about DirectLink and Submit. In any case, I put my @EventListener on
the page class and make a call my component to let it know what changed. I
am sure there must be a better way that allows me to encapsulate all the
logic within my component, so if anyone can point me in the right direction,
that would be great.

On 11/24/06, Mark Reynolds <[EMAIL PROTECTED]> wrote:


I am trying to create a reusuable component that encapsulates the
functionality of two related PropertySelection components.

I placed an @EventListerner annotation on a method inside of my component
class.

public abstract class MySelection extends BaseComponent {

@EventListener(events = "onchange", elements = "item", submitForm =
"form")
public void onItemSelected(IRequestCycle cycle, BrowserEvent event) {
// do something
}



}

I get an exception like this:

Exception: Object [EMAIL PROTECTED] does not implement a listener
method named 'onItemSelected'.
org.apache.hivemind.ApplicationRuntimeException

It seems that Tapestry is looking for the method on the page class, not in
the embedded component class where the annotated method lives. Normally,
when I reference a listener method from within a compoonent (for instance on
a DirectLink or a Submit), tapestry will find the listener method on the
component class.

Am I doing something wrong here or might this be a bug?

Also, in the annotation, I have to specify the name of the form. Assuming
I can have an @EventListener annotation inside a component, It seems a bit
awkward for the component to need to know what the name of the form happens
to be in which it is enclosed. Is there a dynamic way to specify the form?