[ 
https://issues.jboss.org/browse/RF-12762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brian Leathem updated RF-12762:
-------------------------------

    Steps to Reproduce: 
1. Using for c:forEach to construct dynamic columns inside ExtendedDatatable:
e.g. 
{code}
<rich:extendedDataTable 
        id="studentTable"
        value="#{updateMarkBean.studentVoMarkAmends}" 
        var="studVo"
        height="100%">
        <c:forEach items="#{updateMarkBean.taskVos}" 
                var="tvo" 
                varStatus="s">
                <rich:column width="100px">             
                        <h:inputText id="task#{s.index}_amk" 
                        value="#{tvo.xxx}"
                        size="1" maxlength="3"/>
                </rich:column>
        </c:forEach>                            
</rich:extendedDataTable>
{code}

2. First Submit from commandButton has no problem. 
3. Fail on the second submit
Full stack trace:
{code}
java.lang.IllegalStateException: component with duplicate id 
"frmMarkUpdate:studentVoMarkInputTab:j_id_4h_1" found
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:100)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:82)
        at 
org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.saveView(DefaultFaceletsStateManagementStrategy.java:536)
        at 
org.apache.myfaces.application.StateManagerImpl.saveView(StateManagerImpl.java:189)
        at 
javax.faces.application.StateManager.getViewState(StateManager.java:253)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.renderState(ExtendedPartialViewContextImpl.java:371)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartialRenderPhase(ExtendedPartialViewContextImpl.java:272)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:194)
        at 
javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:88)
        at 
javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:88)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:408)
        at 
javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:530)
        at 
org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1981)
        at 
org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:93)
        at 
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
        at 
org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:112)
        at 
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at 
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at 
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at 
hk.edu.hkeaa.infrastructure.security.BlockGetMethodFilter.doFilter(BlockGetMethodFilter.java:227)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.sba.security.UserPathRedirectFilter.doFilter(UserPathRedirectFilter.java:75)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.infrastructure.security.UrlPrivilegeFilter.doFilter(UrlPrivilegeFilter.java:66)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.sba.security.UserCredentialFilter.doFilter(UserCredentialFilter.java:80)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.infrastructure.security.AccessDenyListFilter.doFilter(AccessDenyListFilter.java:58)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:94)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at 
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at 
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at 
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at 
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at 
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
{code}

  was:
1. Using for c:forEach to construct dynamic columns inside ExtendedDatatable:
e.g. 
<rich:extendedDataTable 
        id="studentTable"
        value="#{updateMarkBean.studentVoMarkAmends}" 
        var="studVo"
        height="100%">
        <c:forEach items="#{updateMarkBean.taskVos}" 
                var="tvo" 
                varStatus="s">
                <rich:column width="100px">             
                        <h:inputText id="task#{s.index}_amk" 
                        value="#{tvo.xxx}"
                        size="1" maxlength="3"/>
                </rich:column>
        </c:forEach>                            
</rich:extendedDataTable>

2. First Submit from commandButton has no problem. 
3. Fail on the second submit
Full stack trace:
java.lang.IllegalStateException: component with duplicate id 
"frmMarkUpdate:studentVoMarkInputTab:j_id_4h_1" found
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:100)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)
        at 
org.apache.myfaces.view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:82)
        at 
org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.saveView(DefaultFaceletsStateManagementStrategy.java:536)
        at 
org.apache.myfaces.application.StateManagerImpl.saveView(StateManagerImpl.java:189)
        at 
javax.faces.application.StateManager.getViewState(StateManager.java:253)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.renderState(ExtendedPartialViewContextImpl.java:371)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartialRenderPhase(ExtendedPartialViewContextImpl.java:272)
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:194)
        at 
javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:88)
        at 
javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:88)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:408)
        at 
javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:530)
        at 
org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1981)
        at 
org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
        at 
org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:93)
        at 
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
        at 
org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:112)
        at 
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at 
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at 
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at 
hk.edu.hkeaa.infrastructure.security.BlockGetMethodFilter.doFilter(BlockGetMethodFilter.java:227)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.sba.security.UserPathRedirectFilter.doFilter(UserPathRedirectFilter.java:75)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.infrastructure.security.UrlPrivilegeFilter.doFilter(UrlPrivilegeFilter.java:66)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.sba.security.UserCredentialFilter.doFilter(UserCredentialFilter.java:80)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
hk.edu.hkeaa.infrastructure.security.AccessDenyListFilter.doFilter(AccessDenyListFilter.java:58)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:94)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at 
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at 
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at 
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at 
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at 
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)



    
> Duplicate id problem in ExtendedDatatable with dynamic columns
> --------------------------------------------------------------
>
>                 Key: RF-12762
>                 URL: https://issues.jboss.org/browse/RF-12762
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.3.0.CR1
>         Environment: Windows 7 , weblogic10.4.3, Myfaces 2.1.10, IE 9, 
> FireFox 14.0.1
>            Reporter: blam lam
>            Priority: Critical
>
> When the ExtendedDataTable contains dynamic columns (i.e. using for:each), 
> "java.lang.IllegalStateException: component with duplicate id" will occur 
> after the second submit from a commandButton.
> The problem does not appear in 4.2.3 Final but found in 4.3 CR1
> Sample source code:
> <h:form id="frmMarkUpdate">   
>       <a4j:outputPanel  id="resultPanel">
>               <rich:extendedDataTable id="studentVoMarkInputTab"
>                       value="#{updateMarkBean.studentVoMarkAmends}" 
>                       var="studVo"
>                       selectionMode="none"
>                       height="100%">
>                               
>                       <rich:column width="200px" >
>                               <f:facet name="header">
>                                       Status
>                               </f:facet>
>                               <h:outputText 
> value="#{studVo.student.markAmendStatus}" />
>                       </rich:column>
>               
>                       <c:forEach items="#{updateMarkBean.taskVos}" var="tvo" 
> varStatus="s">
>                               <rich:column width="100px">
>                               <f:facet name="header">
>                                       <h:outputText 
> value="#{tvo.task.taskName}" />                           
>                               </f:facet>
>                               <h:inputText id="task#{s.index}_amk" 
>                                       
> value="#{studVo.getTaskMarkMap().get(tvo.task.taskId).amendedMark}"
>                                       size="1" maxlength="3"/>
>                               </rich:column>
>                       </c:forEach>                            
>               </rich:extendedDataTable>
>               
>               <a4j:commandButton id="btnSave" value="Save" 
>                       action="#{updateMarkBean.doBeforeSave}"                 
>                                 
>                       styleClass="button blue">
>               </a4j:commandButton>
>                                               
>       </a4j:outputPanel>
> </h:form>

--
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
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to