[
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]