ICEfaces
  1. ICEfaces
  2. ICE-8324

TabSet regression in showcase samples

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.0.BETA2
    • Fix Version/s: 3.2
    • Component/s: ACE-Components, Sample Apps
    • Labels:
      None
    • Environment:
      ACE
    • Affects:
      Sample App./Tutorial

      Description

      MyFaces showcase regression testing:

      TabSet - Server Side - switching tabs doesn't load tab content for 2nd and third server tab; in order to load 2nd server tab, must go to 3rd server tab and go back to 2nd server tab; also, multiple tab selection occuring (see attached image)

      TabSet - Proxy - switching tabs doesn't load tab content for 2nd and third server tab; in order to load 2nd server tab, must go to 3rd server tab and go back to 2nd server tab; also, multiple tab selection occuring (see attached image)

        Activity

        Hide
        Carlo Guglielmin added a comment -

        r30027 - Reverted r30015 at Ken's request, so we are back to all h:panelGroups with no divs. It will cause problems with the MyFaces tabs but is a better practice for users looking at the code.

        Show
        Carlo Guglielmin added a comment - r30027 - Reverted r30015 at Ken's request, so we are back to all h:panelGroups with no divs. It will cause problems with the MyFaces tabs but is a better practice for users looking at the code.
        Hide
        Mark Collette added a comment -

        When we next look into this, see if it's still happening, and check if the view state key is being submitted. That shouldn't be a problem due to the fixviewstate javascript. This behaviour is eerily similar to a maintenance branch tabSetProxy issue that was due to the view state key not being submitted, which was fixed by backporting the fixviewstate javascript.

        Show
        Mark Collette added a comment - When we next look into this, see if it's still happening, and check if the view state key is being submitted. That shouldn't be a problem due to the fixviewstate javascript. This behaviour is eerily similar to a maintenance branch tabSetProxy issue that was due to the view state key not being submitted, which was fixed by backporting the fixviewstate javascript.
        Hide
        Mark Collette added a comment - - edited

        There's no difference between what is being submitted for MyFaces and Mojarra.
        The difference between Mojarra and MyFaces is that with MyFaces, TabSet.clearInitialState() is getting called on every postback in the middle of rendering by saveState which is called from context.getApplication().getStateManager().getViewState(context) which is called from org.icefaces.impl.event.FixViewState.ScriptWriter.encode. State saving is supposed to happen after rendering, not in the middle of it. If I disable this FixViewState rendering code, then the problem goes away.
        With Mojarra the clearInitialState() method is not called at all in the postbacks. Possibly getViewState may not trigger state saving.
        It should be noted, that if I click on the TabSet and get the Overview, that is a GET request. Changing the tabs there works. Clicking on Server tabs and then back again will lead to tab changes not working in this Overview. So it's not that any one example is broken, it's that when the TabSet is created from a GET it will work, and when it is created on a POSTback it does not work. Clicking between TabSet examples results in a dynamic ui:include that creates a new h:form and new ace:tabSet on the POSTback. The FixViewState code won't call getViewState on a GET, just on a POSTback.

        Show
        Mark Collette added a comment - - edited There's no difference between what is being submitted for MyFaces and Mojarra. The difference between Mojarra and MyFaces is that with MyFaces, TabSet.clearInitialState() is getting called on every postback in the middle of rendering by saveState which is called from context.getApplication().getStateManager().getViewState(context) which is called from org.icefaces.impl.event.FixViewState.ScriptWriter.encode . State saving is supposed to happen after rendering, not in the middle of it. If I disable this FixViewState rendering code, then the problem goes away. With Mojarra the clearInitialState() method is not called at all in the postbacks. Possibly getViewState may not trigger state saving. It should be noted, that if I click on the TabSet and get the Overview, that is a GET request. Changing the tabs there works. Clicking on Server tabs and then back again will lead to tab changes not working in this Overview. So it's not that any one example is broken, it's that when the TabSet is created from a GET it will work, and when it is created on a POSTback it does not work. Clicking between TabSet examples results in a dynamic ui:include that creates a new h:form and new ace:tabSet on the POSTback. The FixViewState code won't call getViewState on a GET, just on a POSTback.
        Hide
        Jerome Ruzol added a comment - - edited

        Confirmed that issue has been resolved within showcase w/myfaces and ace:tabSet with myfaces regressions re-run (Also confirmed to pass manually).

        Show
        Jerome Ruzol added a comment - - edited Confirmed that issue has been resolved within showcase w/myfaces and ace:tabSet with myfaces regressions re-run (Also confirmed to pass manually).
        Hide
        Mark Collette added a comment -

        Must have lost the commit comment.

        Added hack to work-around the state saving issue. Probably wouldn't work with serialised/compressed/client-side state saving.

        icefaces3 trunk
        Subversion 31475

        Show
        Mark Collette added a comment - Must have lost the commit comment. Added hack to work-around the state saving issue. Probably wouldn't work with serialised/compressed/client-side state saving. icefaces3 trunk Subversion 31475

          People

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

            Dates

            • Created:
              Updated:
              Resolved: