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