I'm trying to do some ajax with tapestry 5.4 and no matter what I do, I can't stop tapestry from generating it's own clientId.
TML: <t:select t:id="category" t:clientId="category" ... /> <t:zone t:id="makeZone"> <t:select t:id="make" t:clientId="make" t:mixins="mycustommixin" ... /> </t:zone> <t:zone t:id="modelZone"> <t:select t:id="model" t:clientId="model" t:mixins="mycustommixin" ... /> </t:zone> I update the zone(s) using some custom javascript: define(["jquery", "t5/core/zone"], function($, zoneManager) { return function(spec) { var $element = $('#' + spec.id); $element.on(spec.event, function() { zoneManager.deferredZoneUpdate(spec.zone, spec.url); }); } The first time the select fields are rendered, they have clientIds of "make" and "model" as expected. But after ajax rendering, they have id's like "make1_af42a49d19a" etc. Is this expected behaviour? Since I've specified a clientId parameter I was hoping this would override the auto-generation. Note: Under the hood, AbstractField is calling allocatedClientId = javaScriptSupport.allocateClientId(clientId);