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

Jesse Kuhnert resolved TAPESTRY-891.
------------------------------------

    Fix Version/s: 4.1.1
       Resolution: Fixed
         Assignee: Jesse Kuhnert

See new render stack related methods added to IRequestCycle

> CLONE -Add getParent() method to IComponent
> -------------------------------------------
>
>                 Key: TAPESTRY-891
>                 URL: http://issues.apache.org/jira/browse/TAPESTRY-891
>             Project: Tapestry
>          Issue Type: Improvement
>          Components: Framework
>    Affects Versions: 3.0.1
>            Reporter: Sergey Manukyan
>         Assigned To: Jesse Kuhnert
>            Priority: Minor
>             Fix For: 4.1.1
>
>
> Tapestry does not allow you to retrieve the parent of a component. If you 
> have a component C nested in a component P, there is no method to retrieve 
> the parent P from C. What is needed is a getParent() method.
> There is no logical reason for not including a getParent method as methods 
> exist to retrieve the children of a component. The getParent method is 
> extremely useful if you wish to change the rendering behavior of a component 
> based on whether it is nested inside a particular component. The JSP taglib 
> API supports this with the TagSupport.findAncestorWithClass(Tag, Class) 
> method. Without the getParent method, it is difficult to convert some JSP 
> tags to Tapestry components.
> Fortunately, this improvement is not difficult to implement. I have 
> successfully implemented this by adding a private variable _parent of type 
> IComponent to AbstractComponent and adding getParent/setParent methods to 
> get/set the variable: the getter should look like this:
> return _parent != null ? _parent : getContainer();
> Finally, add the following line to 
> BaseComponentTemplateLoader.process(OpenToken) method (line 268 under version 
> 3.0.1)
>   component.setParent(_activeComponent);
> (Note that Tapestry does allow you to retrieve the IComponent a particular 
> component is embedded in via the IComponent.getContainer() call. This call 
> will retrieve the component whose template C was defined in. This method does 
> not address the issue.)

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