REGRESSION: 2.0.5->2.0.6: RendererUtils.renderChild no longer checks isRendered
-------------------------------------------------------------------------------

                 Key: MYFACES-3293
                 URL: https://issues.apache.org/jira/browse/MYFACES-3293
             Project: MyFaces Core
          Issue Type: Bug
    Affects Versions: 2.0.7, 2.0.6
            Reporter: Kennard Consulting


Hi guys,

Thanks for all the work you do on MyFaces. It is such a robust JSF 
implementation.

There appears to have been a regression between 2.0.5 and 2.0.6/2.0.7? 
Specifically, RendererUtils.renderChild no longer does an 'upfront' check of 
whether a UIComponent is rendered or not. This logic appears flawed if the 
UIComponent does *not* render its own children (the default in 
Renderer.getRendersChildren)?

First, encodeBegin/encodeEnd for the UIComponent will skip (the default in 
UIComponentBase.encodeBegin). But encodeChildren for the UIComponent will not 
get called (because getRendersChildren is false), so the UIComponent has no 
opportunity to prevent rendering of its children. Instead RendererUtils will 
invoke encodeBegin/encodeEnd on each child directly. So if a rendered component 
is nested inside a non-rendered component, it will still appear.

Surely there is an implication that even if I elect not to render my own 
children (i.e. I let JSF handle it), they should not get rendered if I myself 
am not rendered?

I enclose a small project that demonstrates the issue. Hopefully it is 
sufficient to debug. If not I can try and untangle it from Metawidget.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to