Lance created TAP5-2331:
---------------------------

             Summary: Can't force a clientId for field components
                 Key: TAP5-2331
                 URL: https://issues.apache.org/jira/browse/TAP5-2331
             Project: Tapestry 5
          Issue Type: Bug
            Reporter: Lance


I want to be able to specify a clientId so that tapestry doesn't auto-generate 
one for me. This works on many core tapestry components when I specify an "id" 
because the following code is present:
{code}
clientId = resources.isBound("id") ? idParameter : 
renderSupport.allocateClientId(resources);
{code}

But in AbstractField, this logic is different
{code}
@Parameter(value = "prop:componentResources.id", defaultPrefix = 
BindingConstants.LITERAL)
private String clientId;

final void setup() {
   String id = clientId;
   ...
   assignedClientId = jsSupport.allocateClientId(id);
}

public final String getClientId() {
   return assignedClientId;
}
{code}

This means that tapestry will generate id's like "foo_af42a49d19a" after zone 
updates when I set clientId to "foo". This makes it impossible to attach 
clientside behaviour by field id selectors.

As a workaround, I add "data-" attributes to my fields and select by them 
instead. I assume this has worse performance than id based selectors.

Forum thread 
[here|http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.users#query:list%3Aorg.apache.tapestry.users+page:1+mid:ccqjgtopya3xdgrd+state:results]



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to