Programmatically added UIComponents forgotton
---------------------------------------------

         Key: MYFACES-993
         URL: http://issues.apache.org/jira/browse/MYFACES-993
     Project: MyFaces
        Type: Bug
  Components: General  
    Versions: 1.1.1    
 Environment: tomcat 5.5.9 
    Reporter: Dennis Byrne


In the following JSP, the test method of the test bean creates a 
HtmlOutputText, sets a unique id, sets a value, and adds it to the children 
collection of the UIComponent of the div tag.  However the new child component 
is never rendered.  The only child rendered is the first one (w/ @value = "foo" 
).

<f:view>
   <h:commandLink value="action" action="#{test.test}" />
   <t:div binding="#{test.tag}">
             <h:outputText value="foo" />
   </t:div>
</f:view>

The reason why the first child (@value=foo) is always rendered has to do w/ the 
fact that UIComponentTag.doEndTag ends up triggerring 
HtmlTextRendererBase.renderOutputText during the render response phase.  This 
also explains why the programmatically added sibling is not rendered - there is 
no UIComponentTag.doEndTag() .

The programmatically added UIComponent will be rendered if you wrap t:div w/ a 
panelGrid or panelGroup.  This is because the UIComponents for these two tags 
render their own children, and MyFaces uses recursion in order to make sure the 
proper encoding methods are called on *all* children.   

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

Reply via email to