ICEfaces
  1. ICEfaces
  2. ICE-2695

IllegalStateException: Component ID ... has already been found in the view in datapaginator

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: 1.7DR#3
    • Fix Version/s: 1.7
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      Seam 2.0.1.CR2 + facelets + JBoss AS 4.2.2.GA
    • Assignee Priority:
      P2
    • Workaround Exists:
      Yes
    • Workaround Description:
      Don't use paginator.

      Description

      tab panel which does an <ui:include> to a page with a datatable and an associated datapaginator gave me grief by throwing exception when I pressed the refresh button in the browser on first entry to that tab. Tried giving manual IDs to all components:

      [code]
      <ice:dataPaginator
      for="xxx"
      id="pag"
      paginator="true">
      <f:facet name="first" id="firstfac">
      <ice:outputText value="first" id="firstout"/>
      </f:facet>
      <f:facet name="last" id="lastfac">
      <ice:outputText value="last" id="lastout"/>
      </f:facet>
      <f:facet name="next" id="nextfac">
      <ice:outputText value="next" id="nextout"/>
      </f:facet>
      <f:facet name="previous" id="prevfac">
      <ice:outputText value="previous" id="prevout"/>
      </f:facet>
      <f:facet name="fastforward" id="fastfwdfac">
      <ice:outputText value="fastforward" id="fastfwdout"/>
      </f:facet>
      <f:facet name="fastrewind" id="fastrevfac">
      <ice:outputText value="fastrewind" id="fastrevout"/>
      </f:facet>
      </ice:dataPaginator>
      [/code]

      and the interesting part of the stacktrace is

      [code]
      java.lang.IllegalStateException: Component ID form:tabset:0:pagfastr

                      +id: pag
                       type: com.icesoft.faces.component.datapaginator.DataPaginator@39390
                        +id: prevout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@cce87c
                        +id: lastout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@b34e55
                        +id: fastrevout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@1dbcd95
                        +id: fastfwdout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@196018a
                        +id: nextout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@13f171e
                        +id: firstout
                         type: com.icesoft.faces.component.ext.HtmlOutputText@106f0c2
                        +id: pagfastr
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@a85f71
                          +id: pagfastr_param
                           type: javax.faces.component.UIParameter@120db2
                        +id: pagnext
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@1414822
                          +id: pagnext_param
                           type: javax.faces.component.UIParameter@e6cb7e
                        +id: paglast
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@39e6b0
                          +id: paglast_param
                           type: javax.faces.component.UIParameter@1585e2a
                        +id: pagfirst
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@8e55a3
                          +id: pagfirst_param
                           type: javax.faces.component.UIParameter@984ced
                        +id: pagfastr
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@e2706d
                          +id: pagfastr_param
                           type: javax.faces.component.UIParameter@43180c
                        +id: pagprevious
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@dfeb26
                          +id: pagprevious_param
                           type: javax.faces.component.UIParameter@c728f5
                        +id: pagnext
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@15228b8
                          +id: pagnext_param
                           type: javax.faces.component.UIParameter@ef6882
                        +id: pagfastf
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@1b644d3
                          +id: pagfastf_param
                           type: javax.faces.component.UIParameter@1609f7a
                        +id: paglast
                         type: com.icesoft.faces.component.ext.HtmlCommandLink@8618d5
                          +id: paglast_param
                           type: javax.faces.component.UIParameter@1c8734d

      [/code]

      which leads to the question: Is there a copypaste-bug in the ID generation code?

        Activity

        Hide
        Nicklas Karlsson added a comment -

        Could it be that the ID:s for the page number links somehow get mixed up with the IDs for the navigation links in the datapaginator?

        Show
        Nicklas Karlsson added a comment - Could it be that the ID:s for the page number links somehow get mixed up with the IDs for the navigation links in the datapaginator?
        Hide
        Nicklas Karlsson added a comment -

        If I put just one facet in the datapaginator it works OK
        If I put n [2..6] facets in the datapaginator I get n/2 duplicate exceptions for every other facet defined, eg [last, prev, fastrev, fastfwd, next, last] gives dupe links for [last, fastrev next] !?

        Show
        Nicklas Karlsson added a comment - If I put just one facet in the datapaginator it works OK If I put n [2..6] facets in the datapaginator I get n/2 duplicate exceptions for every other facet defined, eg [last, prev, fastrev, fastfwd, next, last] gives dupe links for [last, fastrev next] !?
        Hide
        Nicklas Karlsson added a comment -

        And it's not a template/include issue since it happens even if I extract the data table + paginator into a standalone page.

        Show
        Nicklas Karlsson added a comment - And it's not a template/include issue since it happens even if I extract the data table + paginator into a standalone page.
        Hide
        Nicklas Karlsson added a comment -

        I put some debug text inside the datapaginator renderer, the links are named fine. The complete stack trace associated with the duplication is
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:335)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322)
        at com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:199)
        at org.jboss.seam.jsf.SeamStateManager.saveSerializedView(SeamStateManager.java:64)
        at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:165)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
        at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
        at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:25)
        at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:161)
        at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet$ThreadBlockingRequestResponse.respondWith(ThreadBlockingAdaptingServlet.java:36)
        at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:30)
        at com.icesoft.faces.webapp.http.core.SingleViewServer.service(SingleViewServer.java:48)
        at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer$Matcher.serviceOnMatch(PathDispatcherServer.java:50)
        at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:19)
        at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)
        at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:29)
        at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:105)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:37)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
        at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:76)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
        at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
        at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Unknown Source)

        Show
        Nicklas Karlsson added a comment - I put some debug text inside the datapaginator renderer, the links are named fine. The complete stack trace associated with the duplication is at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:335) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:322) at com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:199) at org.jboss.seam.jsf.SeamStateManager.saveSerializedView(SeamStateManager.java:64) at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:165) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18) at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:25) at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:161) at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet$ThreadBlockingRequestResponse.respondWith(ThreadBlockingAdaptingServlet.java:36) at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:30) at com.icesoft.faces.webapp.http.core.SingleViewServer.service(SingleViewServer.java:48) at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer$Matcher.serviceOnMatch(PathDispatcherServer.java:50) at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:19) at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19) at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:29) at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:105) at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:37) at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29) at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:76) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at java.lang.Thread.run(Unknown Source)
        Hide
        Mark Collette added a comment -

        I've tried reproducing this, but can not. I recommend attaching a sample application, if you can reliably reproduce this issue.

        Show
        Mark Collette added a comment - I've tried reproducing this, but can not. I recommend attaching a sample application, if you can reliably reproduce this issue.
        Hide
        Nicklas Karlsson added a comment -

        Updating in case someone else stumbles into this.

        It looks like a had bound the paginator to a session scoped seam component, which apparently is a Bad Thing to do.

        Show
        Nicklas Karlsson added a comment - Updating in case someone else stumbles into this. It looks like a had bound the paginator to a session scoped seam component, which apparently is a Bad Thing to do.

          People

          • Assignee:
            Mark Collette
            Reporter:
            Nicklas Karlsson
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: