On second thought, I admit Patrick has a point here. I'm not happy
with my own code example because there's too much boilerplate code.
The injected button members are not really needed.
Albeit, simply adding an "id" property to Component (analogous to
Swing's "name" property) is not a good solution either, because the
WTKXSerializer (soon to be named BeanSerializer) is more general and
unaware of Component -- it would be awkward to insert something like:
if (bean instanceof Component)
((Component)bean).setId(...);
Instead I propose a new class annotation:
@Id
public class Component {
private String id;
// getter and setter...
}
You can also set the name of the id property:
@Id("name")
public class MyBean {
private String name;
// getter and setter...
}
If WTKXSerializer sees the @Id annotation on a bean, it calls its
setter, assuming its type is String. I think that would be general
enough.
@Id could also be named @WtkxId or @BxId.
What do you think?
Pivot 2.0?!?
Regards,
Dirk
Patrick Shea <[email protected]> wrote:
Unfortunately I don't come from an html background. I'm just trying
to reuse the same listener for more than one component but I can't
because I can't separate which is which!
This is where the id comes into play...
I don't think that any xml attribute should be hidden from the java
model, they should always be exposed.
At the very least the namedObjects map should be exposed and not be
private in the serializer.
Patrick
-----Original Message-----
From: "Greg Brown" <[email protected]>
Sent: Monday, May 3, 2010 6:24pm
To: [email protected]
Subject: Re: How to retrieve wtkx:id?
I understand why you might expect it to work that way, especially if
you are coming from HTML, but it doesn't. Consider that Java member
variables are also accessible via reflection, but you still can't
get a variable name from a class instance. WTKX isn't a DOM - it's
just another way of instantiating classes.
Hope that helps clarify things.
Greg
On May 3, 2010, at 6:16 PM, Patrick Shea wrote:
Well, they are declared in xml as id's and used in code in get(...)
so they are quite public.
I was able to go around this by reflection but it's ugly and they
should really be exposed at the component level I think.
Patrick
-----Original Message-----
From: "Greg Brown" <[email protected]>
Sent: Monday, May 3, 2010 6:07pm
To: [email protected]
Subject: Re: How to retrieve wtkx:id?
No. WTKX IDs don't work like HTML IDs - they are more like variable
names. Just as there is no way to retrieve a variable name from an
object instantiated in Java, there is no way to retrieve an ID from
an object declared in WTKX.
On May 3, 2010, at 10:20 AM, Patrick Shea wrote:
Is there a way to get the wtkx:id of a given component?
Thanks
Patrick
--
Dirk Möbius
SCOOP GmbH
Am Kielshof 29
D-51105 Köln
Fon +49 221 801916-0
Fax +49 221 801916-17
Mobil +49 170 7363035
www.scoop-gmbh.de
Sitz der Gesellschaft: Köln
Handelsregister: Köln
Handelsregisternummer: HRB 36623
Geschäftsführer:
Dr. Oleg Balovnev
Frank Heinen
Dr. Wolfgang Reddig
Roland Scheel