ICEfaces
  1. ICEfaces
  2. ICE-8278

REGRESSION: ace:tabSet - Component ID has already been found in the view

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.0.BETA2
    • Fix Version/s: 3.1.0.RC1, 3.1
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEfaces3 Trunk Revision# 29580 (First failed at Revision# 29276 and wasn't failing at Revision# 29275)
      Server: Tomcat6
    • Assignee Priority:
      P1

      Description

      To reproduce:
      1. Build / deploy test app located at: http://server.ice:8888/svn/repo/qa/trunk/Regression-Icefaces2/Sparkle/Nightly/tabset
      2. Navigate to either '/dataStructures/nestedDataTableClient.jsf' or '/dataStructures/tabRepeat2.jsf'

      SEVERE: Error Rendering View[/dataStructures/tabRepeat2.xhtml]
      java.lang.IllegalStateException: Component ID itemTable:clientPaneOne_fixviewstate has already been found in the view.
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:846)
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:830)
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:830)
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:830)
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:830)
          at com.sun.faces.util.Util.checkIdUniqueness(Util.java:830)
          at com.sun.faces.application.view.StateManagementStrategyImpl.saveView(StateManagementStrategyImpl.java:144)
          at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:133)
          at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225)
          at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:419)
          at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
          at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
          at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
          at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
          at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
          at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
          at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
          at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
          at java.lang.Thread.run(Thread.java:619)

        Activity

        Cruz Miraback created issue -
        Hide
        Ken Fyten added a comment -

        This failure seems to be caused by the commit for "ICE-8168 Refined ICE-8132 fix by rendering JS code that inserts the view state input element only if needed. Also use ID for the wrapping span to minimize the partial update for the first post back.", rvn # 29276.

        Show
        Ken Fyten added a comment - This failure seems to be caused by the commit for "ICE-8168 Refined ICE-8132 fix by rendering JS code that inserts the view state input element only if needed. Also use ID for the wrapping span to minimize the partial update for the first post back.", rvn # 29276.
        Ken Fyten made changes -
        Field Original Value New Value
        Salesforce Case []
        Fix Version/s 3.1.0.RC1 [ 10337 ]
        Fix Version/s 3.1 [ 10312 ]
        Assignee Priority P1
        Affects Version/s 3.1.0.BETA2 [ 10336 ]
        Assignee Mircea Toma [ mircea.toma ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29666 Mon Jun 25 08:51:30 MDT 2012 mircea.toma ICE-8278 Generate unique IDs for each FixViewState.ScriptWriter instance.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/FixViewState.java
        Hide
        Mircea Toma added a comment -

        Looks like the TabSet component is reusing the tab's root component. Since the ID assigned to FixViewState.ScriptWriter is created just by appending a suffix to the parent ID we get these duplicate component IDs.

        The fix applied assignes a uniquely generated ID for each FixViewState.ScriptWriter instance.

        Show
        Mircea Toma added a comment - Looks like the TabSet component is reusing the tab's root component. Since the ID assigned to FixViewState.ScriptWriter is created just by appending a suffix to the parent ID we get these duplicate component IDs. The fix applied assignes a uniquely generated ID for each FixViewState.ScriptWriter instance.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Ted Goddard added a comment -

        This appears to be a mojarra bug with uniqueness checking not using visitTree, so is missing ID differences due to iteration.

        <context-param>
        <param-name>com.sun.faces.disableIdUniquenessCheck</param-name>
        <param-value>true</param-value>
        </context-param>

        Show
        Ted Goddard added a comment - This appears to be a mojarra bug with uniqueness checking not using visitTree, so is missing ID differences due to iteration. <context-param> <param-name>com.sun.faces.disableIdUniquenessCheck</param-name> <param-value>true</param-value> </context-param>
        Ted Goddard made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29678 Mon Jun 25 17:02:11 MDT 2012 mircea.toma ICE-8278 Revert previous fix. Wire the system event listener to react to PostAddToViewEvent instead to bypass the complications of the UIData's rendering behaviour.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/FixViewState.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/resources/META-INF/faces-config.xml
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29679 Mon Jun 25 17:04:27 MDT 2012 mircea.toma ICE-8278 Refactor code for easy debugging.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/FixViewState.java
        Hide
        Mircea Toma added a comment - - edited

        It looks like the issue is created by the special child component handling that DataTable implements during rendering (more specifically its superclass UIData.setRowIndex method) . I don't pretend to understand how everything works in UIData-DataTable but reverting the last fix for the FixViewState class and wiring it to react to the PostAddToViewEvent instead of PreRenderComponentEvent bypasses the rendering complications of the UIData class.

        Show
        Mircea Toma added a comment - - edited It looks like the issue is created by the special child component handling that DataTable implements during rendering (more specifically its superclass UIData.setRowIndex method) . I don't pretend to understand how everything works in UIData-DataTable but reverting the last fix for the FixViewState class and wiring it to react to the PostAddToViewEvent instead of PreRenderComponentEvent bypasses the rendering complications of the UIData class.
        Mircea Toma made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29681 Tue Jun 26 09:49:19 MDT 2012 mircea.toma ICE-8278 Wire-up listener to receive PreRenderComponentEvent-s once again. Introduce check for duplicates IDs in the isListenerforSource methods.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/FixViewState.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/resources/META-INF/faces-config.xml
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29683 Tue Jun 26 10:09:50 MDT 2012 mircea.toma ICE-8278 Iterate over parents children since that is where the dynamic component is added.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/FixViewState.java
        Ken Fyten made changes -
        Link This issue blocks ICE-8300 [ ICE-8300 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Cruz Miraback
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: