You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Juan Fernandez Corugedo (Commented) (JIRA)" <de...@myfaces.apache.org> on 2012/01/16 11:28:41 UTC
[jira] [Commented] (MYFACES-3447) Invalid Id check in the
UIViewRoot.addComponentResource method
[ https://issues.apache.org/jira/browse/MYFACES-3447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13186851#comment-13186851 ]
Juan Fernandez Corugedo commented on MYFACES-3447:
--------------------------------------------------
Ok, all that you have said its truth, but how can I put two outputStylesheet with same ID but diferent clientID and value (that is perfectly correct)
> Invalid Id check in the UIViewRoot.addComponentResource method
> --------------------------------------------------------------
>
> Key: MYFACES-3447
> URL: https://issues.apache.org/jira/browse/MYFACES-3447
> Project: MyFaces Core
> Issue Type: Bug
> Affects Versions: 2.1.3, 2.1.4, 2.1.5
> Environment: Glassfish 3.1 y jdk1.6
> Reporter: Juan Fernandez Corugedo
> Assignee: Leonardo Uribe
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> The method addComponentResource of the class UIViewRoot makes a check over the Id attribute of each component that will be inserted into the componentResources list:
> <code>
> // If the component ID of componentResource matches the ID of a resource that has already been added, remove the old resource.
> String componentId = componentResource.getId();
> ...
> else if (componentId != null)
> {
> for(Iterator<UIComponent> it = componentResources.iterator(); it.hasNext();)
> {
> UIComponent component = it.next();
> if(componentId.equals(component.getId()) && componentResource != component)
> {
> it.remove();
> }
> else if (componentResource == component)
> {
> alreadyAdded = true;
> }
> }
> }
> </code>
> As you can see, if there are two components with the same Id but different clientId, only one of them will be included in the header:
> <bks:outputStylesheet id="testStyle" library="css1" name="test1.css"/> <!-- Its clientId is testStyle -->
> <form id="form">
> ...
> <bks:outputStylesheet id="testStyle" library="css2" name="test2.css"/> <!-- Its clientId is form:testStyle -->
> ...
> </form>
> This situtation can be solved using the clientId instead of the id attribute:
> <code>
> // If the component CLIENT_ID of componentResource matches the CLIENT_ID of a resource that has already been added, remove the old resource.
> String componentId = componentResource.getClientId();
> </code>
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira