[richfaces-issues] [JBoss JIRA] (RF-12762) Duplicate id problem in ExtendedDatatable with dynamic columns

Brian Leathem (JIRA) jira-events at lists.jboss.org
Tue Jan 29 10:16:48 EST 2013


     [ 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


More information about the richfaces-issues mailing list