[ 
http://issues.apache.org/jira/browse/TAPESTRY-517?page=comments#action_12317269 
] 

Jonas Maurus commented on TAPESTRY-517:
---------------------------------------

There is obviously something funny going on in FormSupportImpl that gets in the 
way when a field is prerendered. The above template code (modified for Beta 3, 
with the attached patch applied):

<tr>
  <td><input jwcid="bookkeeperRCB" type="checkbox" /></td>
  <td><label jwcid="@FieldLabel" for="bookkeeper"
            field="ognl:components.bookkeeperRCB" 
displayName="message:form.roles.bookkeeper">Bookkeeper</label></td>
</tr>
<tr>
  <td><input jwcid="adminRCB" type="checkbox" /></td>
  <td><label jwcid="@FieldLabel" for="admin"
           field="ognl:components.adminRCB" 
displayName="message:form.roles.administrator">Administrator</label></td>
</tr>

yields:

<input type="hidden" name="formids" 
value="bookkeeperRCB,bookkeeperRCB$0,adminRCB,adminRCB$0" />
<tr>
  <td><input type="checkbox" name="bookkeeperRCB" id="bookkeeperRCB"/></td>
  <td><label for="bookkeeperRCB">Bookkeeper</label></td>
</tr>
<tr>
  <td><input type="checkbox" name="adminRCB" checked="checked" 
id="adminRCB"/></td>
  <td><label for="adminRCB">Administrator</label></td>
</tr>

The malformed formids array causes the rewind to fail. I'm posting this so 
someone can perhaps pick up the work from here, as I have to call it a day now. 
Please leave a comment if you do, otherwise I'll try to track the bug down 
tomorrow.

> Using a FieldLabel component after the decorated form component causes the 
> FieldLabel's id attribute to be wrong
> ----------------------------------------------------------------------------------------------------------------
>
>          Key: TAPESTRY-517
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-517
>      Project: Tapestry
>         Type: Bug
>   Components: Framework
>     Versions: 4.0
>     Reporter: Jonas Maurus
>  Attachments: AbstractFormComponent.clientid_fix.diff
>
> Quoting from TAPESTRY-409:
> <!-- page definition -->
>   <component id="bookkeeperRCB" type="Checkbox">
>     <binding name="selected" value="hasBookkeeperRole" />
>   </component>
>   
>   <component id="adminRCB" type="Checkbox">
>     <binding name="selected" value="hasAdministratorRole" />
>   </component>
> <!-- page template -->
> <tr>
>   <td><input jwcid="bookkeeperRCB" type="checkbox" value="Y" /></td>
>   <td><label jwcid="@FieldLabel" for="bookkeeper"
>             field="ognl:components.bookkeeperRCB" 
> displayName="message:form.roles.bookkeeper">Bookkeeper</label></td>
> </tr>
> <tr>
>   <td><input jwcid="adminRCB" type="checkbox" value="Y" /></td>
>   <td><label jwcid="@FieldLabel" for="admin"
>            field="ognl:components.adminRCB" 
> displayName="message:form.roles.administrator">Administrator</label></td>
> </tr>
> yields:
> <tr>
>   <td><input type="checkbox" name="bookkeeperRCB" id="bookkeeperRCB" 
> value="Y"/></td>
>   <td><label for="bookkeeperRCB$0">Bookkeeper</label></td>
> </tr>
> <tr>
>   <td><input type="checkbox" name="adminRCB" checked="checked" id="adminRCB" 
> value="Y"/></td>
>   <td><label for="adminRCB$0">Administrator</label></td>
> </tr>
> as you can see the generated fieldnames ("bookkeeperRCB$0"...) are wrong. 
> This always results in a stale-link exception.
> I tracked down the bug: FieldLabel calls prerenderField() which in turn 
> causes an uniqueId to be allocated in 
> AbstractFormComponent.renderIdAttribute. Everything works out when the 
> FieldLabel precedes the form component it decorates. If it comes after the 
> form component, IRequestCycle.getUniqueId() will already have stored an id 
> for the component and return a new one.
> I'm not quite sure about the mechanics described above, as I don't fully 
> understand FormSupportImpl yet, perhaps someone else can shed light on this.
> However, the allocated client id wasn't cached properly in 
> AbstractFormComponent.renderIdAttribute. I'll attach a patch as soon as I've 
> saved this bug report.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to