Consider the following example: Page: <ul t:type="widgets/sortableContainer" t:id="list1" containers="list1,list2"> <li t:type="fund/fundGraph" fundId="one" /> <li t:type="fund/fundGraph" fundId="two" /> <li t:type="fund/fundGraph" fundId="three" /> </ul> <t:zone t:id="editZone"> </t:zone>
FundGraph: <li> <t:block t:id="viewBlock"> <t:zone t:id="viewZone"> <t:actionLink t:id="edit" zone="editZone" context="graphPreferences.fundId">edit</t:actionLink><br /> ... </t:zone> </t:block> <t:block t:id="editBlock"> <form t:type="form" t:id="graphPreferencesForm" zone="viewZone"> ... </form> </t:block> </li> I have a page with a few fund graphs and an editZone. Each graph has an edit link which causes a form to appear in the editZone. Each graph also has a viewZone which will be updated once it's form is submitted. Tapestry sees that I am including more than one "editZone" and magically calls the zones "editZone", "editZone_1" etc Therefore, when any form is submitted, the first graph is updated with the reasult. I would like to give the zone a dynamic id, something like "prop:viewZoneId" which I calculate at runtime but tapestry is erroring stating: "Component ids must be valid Java identifiers: start with a letter, and consist of letters, numbers and underscores." Any suggestions? Cheers, Lance.