[ http://issues.apache.org/jira/browse/TAPESTRY-517?page=all ]
Jonas Maurus updated TAPESTRY-517:
----------------------------------
Attachment: AbstractFormComponent.clientid_fix_2.diff
This patch fixes all issues (including the runaway formids), but doesn't fix
the underlying design issues. I've started a discussion on the developer
mailing list (http://news.gmane.org/gmane.comp.jakarta.tapestry.devel) on this
bug to create a roadmap.
> 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,
> AbstractFormComponent.clientid_fix_2.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]