You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org> on 2006/08/13 18:39:14 UTC

[jira] Resolved: (TAPESTRY-1054) DojoAjaxResponseBuilder will never render FormComponents

     [ http://issues.apache.org/jira/browse/TAPESTRY-1054?page=all ]

Jesse Kuhnert resolved TAPESTRY-1054.
-------------------------------------

    Fix Version/s: 4.1.1
       Resolution: Fixed

Fixed. Applied suggested changes and it worked out. Thanks :) Will deploy it in a couple minutes.

> DojoAjaxResponseBuilder will never render FormComponents
> --------------------------------------------------------
>
>                 Key: TAPESTRY-1054
>                 URL: http://issues.apache.org/jira/browse/TAPESTRY-1054
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.1.1
>            Reporter: Ben Sommerville
>         Assigned To: Jesse Kuhnert
>             Fix For: 4.1.1
>
>         Attachments: TapBug-1054.zip
>
>
> DojoAjaxResponseBuilder uses the client id of a component to determine whether or not to render it (see the contains method).  Form components (children of AbstractFormComponent) will always have a null client id at this point & hence will never be rendered.
> The form components seem to have a null client id because AbstractFormComponent has an abstract setClientId method.  This causes tapestry to add a generated getClientId method that overrides the AbstractComponent.getClientId method.  If you look at a form component in a debugger you can see the extra $clientId member variables that have been added to the concrete class.
> The AbstractFormComponent setClientId method is only invoked by renderIdAttribute.  Obviously this happens after the DojoAjaxResponseBuilder calls getClientId to determine whether the component should be rendered.
> I think this can be fixed by removing the AbstractFormComponent setClientId method & adding a protected setClientId method to AbstractComponent (that just sets the _clientId member).  
> This will result in DojoAjaxResponseBuilder calling AbstractComponent.getClientId & being returned the bound id or the IComponent.getId.  Either of which should allow it to properly determine whether the component is supposed to be rendered or not.

-- 
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: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org