Hi all,

I would like to have your opinion on the following case :

I want to create a Tapestry component as an assembly of several
components and javascript functions (in a .js file) and those functions
need to have access to the components' values.
This component could be, for example a "birthdate" component with say 2
selection boxes for the day and the month and a textfied for the year.
The javascript functions could check the values of the different fields
before they are sent to the server part of the application.

So my question is "How can i name my select and textfield components to
access them from the javascript functions ?"
1. If i let Tapestry build a default id for my subcomponents, i won't
know their ids to use them in my javascript functions.
2. If i give myself "hardcoded" names for my subcomponents and package
my birthdate component in a library, they may be a clash beetween those
names and ones already used on a page in a specific application.
3. I have thought about prefixing my subcomponents ids with the
component id like ${componentid}:day, ${componentid}:month,
${componentid}:year (this implementation seems to be used in the palette
component ...). By passing the id of my component as a parameter of my
javascript initialization function, i could get access to my
subcomponents in my javascript functions. And, as the id of my component
is unique, the ids of my subcomponents will also be unique. But Tapestry
doesn't let me build "composite" ids : i can't use ${componentid}:day as
an id in a tml file and the getClientId() of the AbstractField class
can't be overriden if i want to create "evolutions" of the Tapestry
components which could take a prefix for their id as a parameter ...


Did i miss something ? Is there another way to build Tapestry
"composite" components ?
Thanks in advance for any advice.

Stephane

Reply via email to