ICEfaces
  1. ICEfaces
  2. ICE-3328

PartialSubmit does not work with Spring WebFlow 2.0.2

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.1
    • Fix Version/s: 1.7.2
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Spring 2.0.2.

      Description

      When accessing an ICEfaces page that has a component with partialSubmit set to true, the following exception is thrown:

      java.lang.NullPointerException

      com.icesoft.faces.application.D2DViewHandler.findComponent(D2DViewHandler.
      java:731)

      This configuration worked properly for WebFlow 1.0.5 and ICEFaces 1.6.2.

        Activity

        Hide
        Ted Goddard added a comment -

        One of the key factors in this bug is that SWF is performing its own state saving and this is colliding with the persistent component tree maintained by ICEfaces.

        A fix being investigated is as follows:

        • move partialSubmit functionality out of the Servlet stack into a PhaseListener
        • add state saving capability to UIXhtmlComponent

        Note that the partialSubmit functionality cannot remain in the Servlet stack when standard JSF state saving is performed – the component tree does not exist prior to ViewHandler execution. An alternative possibility is to move partial submit into the ViewHandler, however, 3rd parth PhaseListener interaction is simpler, so it is better to leave less functionality in the ViewHandler.

        Show
        Ted Goddard added a comment - One of the key factors in this bug is that SWF is performing its own state saving and this is colliding with the persistent component tree maintained by ICEfaces. A fix being investigated is as follows: move partialSubmit functionality out of the Servlet stack into a PhaseListener add state saving capability to UIXhtmlComponent Note that the partialSubmit functionality cannot remain in the Servlet stack when standard JSF state saving is performed – the component tree does not exist prior to ViewHandler execution. An alternative possibility is to move partial submit into the ViewHandler, however, 3rd parth PhaseListener interaction is simpler, so it is better to leave less functionality in the ViewHandler.
        Hide
        Ted Goddard added a comment -

        Using the above fix, the SWF booking demo is functional up to "book hotel" including partial submit.

        Show
        Ted Goddard added a comment - Using the above fix, the SWF booking demo is functional up to "book hotel" including partial submit.
        Hide
        Mark Collette added a comment -

        In the UIXhtmlComponent state saving, standardAttributes and elValueExpressions should detect when they reference Collections.EMPTY_MAP, and just save nulls. When they restore, they could go back from nulls to Collections.EMPTY_MAP. That way, after save and restore, they won't inadvertantly be referencing new, unique, empty maps, and take up more memory.

        Show
        Mark Collette added a comment - In the UIXhtmlComponent state saving, standardAttributes and elValueExpressions should detect when they reference Collections.EMPTY_MAP, and just save nulls. When they restore, they could go back from nulls to Collections.EMPTY_MAP. That way, after save and restore, they won't inadvertantly be referencing new, unique, empty maps, and take up more memory.

          People

          • Assignee:
            Unassigned
            Reporter:
            Tyler Johnson
          • Votes:
            5 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: