[ 
https://issues.apache.org/jira/browse/MYFACES-4631?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17789362#comment-17789362
 ] 

Manuel K commented on MYFACES-4631:
-----------------------------------

I have now tested this using a custom MyFaces build, because we seem to have 
the same problem. But we still get the following exception:

 
{code:java}
org.apache.myfaces.view.facelets.compiler.DuplicateIdException: Component with 
duplicate id "j_id__rd_5" found. The first component is {Component-Path : 
[Class: jakarta.faces.component.UIViewRoot,ViewId: /person.xhtml][Class: 
org.apache.myfaces.component.ComponentResourceContainer,Id: 
jakarta_faces_location_head][Class: jakarta.faces.component.UIOutput,Id: 
j_id__rd_5]}
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.createAndQueueException(CheckDuplicateIdFaceletUtils.java:139)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:95)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:109)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:103)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:81)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.PartialStateManagementStrategy.saveView(PartialStateManagementStrategy.java:721)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.StateManager.getViewState(StateManager.java:147)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartialRendering(PartialViewContextImpl.java:512)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:392)
    at 
deployment.ourapp.ear.ourapp-web.war//org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:65)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:95)
    at 
deployment.ourapp.ear.ourapp-web.war//org.omnifaces.context.OmniPartialViewContext.processPartial(OmniPartialViewContext.java:122)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:577)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:510)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1783)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:316)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
    at 
deployment.ourapp.ear.ourapp-web.war//org.omnifaces.viewhandler.OmniViewHandler.renderView(OmniViewHandler.java:166)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:74)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:122)
    at 
jakarta.faces.impl:[email protected]//org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
    at 
jakarta.faces.api:[email protected]//jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:225)
 {code}
It happens under the following circumstances:
 * Have a page with a composite component (not sure if that's necessary)
 * Have a _c:forEach_ in the composite component
 * Use a bean annotated with _org.omnifaces.cdi.ViewScoped_ on the page. This 
results in faces.js and omnifaces.js being added to the HTML body (not head, 
because it's too late for that).
 * Have _STRICT_JSF_2_FACELETS_COMPATIBILITY_ enabled (not sure if that's 
necessary either, but that's what we use)
 * Have AJAX postbacks

Sadly, I wasn't able to reproduce it in an isolated environment (the 
primefaces-test project) even though I rebuilt it there very very similarly. So 
I understand if you can't follow up. But I just wanted to mention it.

We will now workaround it by switching back to 
{_}jakarta.faces.view.ViewScoped{_}. We originally switched to OmniFaces in JSF 
2.3 because of other problems, but these do not seem to be present anymore.

 

> DuplicateIdException via addComponentResource
> ---------------------------------------------
>
>                 Key: MYFACES-4631
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4631
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.3.10, 3.0.2, 2.3-next-M8, 4.0.1
>            Reporter: Volodymyr Siedlecki
>            Priority: Major
>             Fix For: 4.0.2, 4.1.0
>
>
> See Bug Report here:
> [https://github.com/primefaces-extensions/primefaces-extensions/issues/517]
>  
> [https://github.com/omnifaces/omnifaces/wiki/Combine-hardcoded-PrimeFaces-resources-using-CombinedResourceHandler]
>  
> See comment here for root cause: 
> [https://github.com/primefaces-extensions/primefaces-extensions/issues/517#issuecomment-1688911766]
> {{{}I saw we had a id counter and it starts at 0 before the state is stored. 
> So when the script is added, it's always using the same counter. [ See 
> here.|https://github.com/apache/myfaces/blob/304099d4588383424df9105d5a751911c1c5301a/api/src/main/java/jakarta/faces/component/UIViewRoot.java#L493-L495]{}}}{{{}I
>  think the main issue is that we aren't adding ids to the nested items here: 
> [https://github.com/apache/myfaces/blob/304099d4588383424df9105d5a751911c1c5301a/api/src/main/java/jakarta/faces/component/UIViewRoot.java#L218-L224]{}}}
> {{We need to look at the children and also assign IDs. }}
> {{Only issue I see above is that I search only the immediate children and 
> don't drill down any further. Otherwise, it seems to fix the duplicate id 
> exception :)}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to