[ 
https://issues.apache.org/jira/browse/MYFACES-3668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonardo Uribe resolved MYFACES-3668.
-------------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 2.0.10)
                       (was: 2.1.4)
                   2.1.11
                   2.0.17

The problem was caused because a call in renderFacet tag handler to 
super.apply(ctx, parent) when building view metadata. This triggers component 
creation, but in this step that's not necessary, because this will be done 
later when cc:implementation body is executed.

The difficulty to see it resides in the fact that the composite component 
metadata is cached, so it only happens the first time the composite component 
is rendered.

Thanks to Zhao Koh for provide the example that helps to debug and fix the 
problem.
                
> CLONE - UIForm.createUniqueId should take into account prependId logic
> ----------------------------------------------------------------------
>
>                 Key: MYFACES-3668
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3668
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>            Reporter: Zhao Koh
>            Assignee: Leonardo Uribe
>             Fix For: 2.0.17, 2.1.11
>
>         Attachments: composite.src.tar.gz, composite.war, 
> MYFACES-3668-1.patch, MYFACES-3668-2.patch
>
>
> If prependId="false", the generated id should get an unique id from the 
> parent naming container of UIForm, to ensure uniqueness on id generation.
> Reported by Zhao Koh on dev list : MyFaces 2.1.8 - Issues with composite 
> component renderFacet
> Hi all,
> I am currently using MyFaces 2.1.8 but discovered an issue with composite 
> component renderFacet - and this issue started at version 2.1.4.
> The following describes the problem:
> I have a composite component called buttonSelectBox that uses 
> composite:renderFacet to inject content from client - nothing fancy, only a 
> span that surrounds the content.
> <html xmlns="http://www.w3.org/1999/xhtml"; 
>         xmlns:h="http://java.sun.com/jsf/html"; 
>         xmlns:f="http://java.sun.com/jsf/core"; 
>         xmlns:c="http://java.sun.com/jsp/jstl/core"; 
>         xmlns:ui="http://java.sun.com/jsf/facelets"; 
>         xmlns:composite="http://java.sun.com/jsf/composite"; 
>         xmlns:p="http://primefaces.org/ui";> 
>         <composite:interface> 
>                 <composite:attribute name="compId" required="true" /> 
>                 <composite:attribute name="defaultText" required="true" /> 
>                 <composite:facet name="content" required="false" /> 
>         </composite:interface> 
>         <composite:implementation> 
>                 <span class="buttonlink"> 
>                         <composite:renderFacet name="content" /> 
>                   </span>                     
>         </composite:implementation> 
> </html> 
> Then I have a facelet page that uses this composite component and a standard 
> <h:commandButton> that invokes an action.
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";> 
> <html xmlns="http://www.w3.org/1999/xhtml"; 
>         xmlns:h="http://java.sun.com/jsf/html"; 
>         xmlns:c="http://java.sun.com/jsp/jstl/core"; 
>         xmlns:f="http://java.sun.com/jsf/core"; 
>         xmlns:ui="http://java.sun.com/jsf/facelets"; 
>         xmlns:custom="http://java.sun.com/jsf/composite/components"; 
>         xmlns:p="http://primefaces.org/ui"; 
>         xmlns:pe="http://primefaces.org/ui/extensions"; 
>         lang="en"> 
> <h:head> 
> </h:head> 
> <h:body> 
>         <div class="container"> 
>         
>                 <div class="row"> 
>                         <div id="workspace"> 
>                                 <h:form id="taskListForm" prependId="false"> 
>                                         <custom:buttonSelectBox 
> compId="myLinksMenu" defaultText="2222"> 
>                                                 <f:facet name="content"> 
>                                             <ul> 
>                                                 <li><a href="#">My 
> Preferences</a></li> 
>                                         </ul> 
>                                         <ul> 
>                                                 <li><a href="#">My 
> Profile</a></li> 
>                                             <li><a 
> href="#{facesContext.externalContext.requestContextPath}/logout">Logout</a></li>
>  
>                                         </ul> 
>                                                 </f:facet> 
>                                         </custom:buttonSelectBox> 
>                                 
>                                         <h:commandButton 
> action="#{testBean.buttonAction}" value="Click ME" /> 
>                                 </h:form> 
>                         </div>         
>                 </div> 
>         </div> 
>         
> </h:body> 
> </html> 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to