myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Resolved] (MYFACES-3668) CLONE - UIForm.createUniqueId should take into account prependId logic
Date Sat, 22 Dec 2012 01:19:14 GMT

     [ 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

Mime
View raw message