ICEfaces
  1. ICEfaces
  2. ICE-5159

Implement low bandwidth form submission

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Incomplete
    • Affects Version/s: 1.8.2, 1.8.2-EE-Beta
    • Fix Version/s: None
    • Component/s: Bridge, Framework
    • Labels:
      None
    • Environment:
      browser & server

      Description

      For deployments with low bandwidth communication requirements we need to come up with a implementation that avoids sending unchanged widget values to the server. The unchanged values can be reconstructed on the server-side so that component validators and renderers won't get confused.

        Issue Links

          Activity

          Mircea Toma created issue -
          Mircea Toma made changes -
          Field Original Value New Value
          Salesforce Case []
          Fix Version/s 1.8.2-EE [ 10216 ]
          Assignee Mircea Toma [ mircea.toma ]
          Ken Fyten made changes -
          Salesforce Case []
          Fix Version/s 1.8.2-EE-GA_P01 [ 10220 ]
          Fix Version/s 1.8.2-EE-GA [ 10216 ]
          Ken Fyten made changes -
          Salesforce Case []
          Fix Version/s 1.8.3 [ 10211 ]
          Ken Fyten made changes -
          Link This issue depends on ICE-5148 [ ICE-5148 ]
          Hide
          Mircea Toma added a comment - - edited

          When we started to look at this issue we had two different implementations in mind:

          a) The idea for the first implementation is to send only the minimal information such as event and triggering element data. The rest of the parameters that correspond to elements that have not changed since the last submit will be reconstructed on the server-side from the DOM document and then put into ExternalContext's parameter maps before decode phase is ran.

          b) The idea for the second implementation is to calculate the parameter difference between submits. The full set of parameters will be reconstructed on the server-side by applying the changes send in submit to the set of parameters stored during the previous submit.

          Advantages:

          a) Easy to implement. No heavyweight calculations needed. The code on the client side needs to change very little. Reconstructing the full set of parameters on the server is straight forward, just a simple serialization of the form elements.

          b) ICEfaces components or third party components will work seamlessly since the parameter diffing will work also with the parameters created by hidden input elements.

          Disadvantages:

          a) ICEfaces components that use hidden input elements to submit additional parameters will need to be changed. Since the form is not serialized anymore the additional parameters will have to be defined directly in the event callback. Third party components that use hidden fields won't work.
          Also, onchange callbacks have to be configured for the form elements. This is necessary in case the element values are changed without an immediate submission. The onchange listeners will record the changed elements and they will be serialized during the next submit.

          b) Calculating the parameter difference on the client side is quite expensive, especially for large forms. In order to significantly improve performance we need to implement or find a proper Hashtable implementation. This way lookups will be much faster when calculating what parameters are added or removed.
          Also, for sending the parameter differences to the server we have to come up with a protocol for describing parameter addition, removal and update.

          Show
          Mircea Toma added a comment - - edited When we started to look at this issue we had two different implementations in mind: a) The idea for the first implementation is to send only the minimal information such as event and triggering element data. The rest of the parameters that correspond to elements that have not changed since the last submit will be reconstructed on the server-side from the DOM document and then put into ExternalContext's parameter maps before decode phase is ran. b) The idea for the second implementation is to calculate the parameter difference between submits. The full set of parameters will be reconstructed on the server-side by applying the changes send in submit to the set of parameters stored during the previous submit. Advantages: a) Easy to implement. No heavyweight calculations needed. The code on the client side needs to change very little. Reconstructing the full set of parameters on the server is straight forward, just a simple serialization of the form elements. b) ICEfaces components or third party components will work seamlessly since the parameter diffing will work also with the parameters created by hidden input elements. Disadvantages: a) ICEfaces components that use hidden input elements to submit additional parameters will need to be changed. Since the form is not serialized anymore the additional parameters will have to be defined directly in the event callback. Third party components that use hidden fields won't work. Also, onchange callbacks have to be configured for the form elements. This is necessary in case the element values are changed without an immediate submission. The onchange listeners will record the changed elements and they will be serialized during the next submit. b) Calculating the parameter difference on the client side is quite expensive, especially for large forms. In order to significantly improve performance we need to implement or find a proper Hashtable implementation. This way lookups will be much faster when calculating what parameters are added or removed. Also, for sending the parameter differences to the server we have to come up with a protocol for describing parameter addition, removal and update.
          Hide
          Mircea Toma added a comment -

          Picked choice a) for now.

          Show
          Mircea Toma added a comment - Picked choice a) for now.
          Hide
          Mircea Toma added a comment -

          Serialize only event and changed form elements. Captured changed elements. Maintain onchange listeners for the updated elements.

          Show
          Mircea Toma added a comment - Serialize only event and changed form elements. Captured changed elements. Maintain onchange listeners for the updated elements.
          Hide
          Mircea Toma added a comment -

          Modify commandLink and selectInputDate renderers to not use hidden fields. Instead the additional parameters are sent as optional parameters for iceSubmit/icesubitPartial function.

          Show
          Mircea Toma added a comment - Modify commandLink and selectInputDate renderers to not use hidden fields. Instead the additional parameters are sent as optional parameters for iceSubmit/icesubitPartial function.
          Hide
          Mircea Toma added a comment -

          Simplified how optional parameters are added when iceSubmit/iceSubmitPArtial is invoked.

          Show
          Mircea Toma added a comment - Simplified how optional parameters are added when iceSubmit/iceSubmitPArtial is invoked.
          Hide
          Mircea Toma added a comment - - edited

          Looks like there is a Hashtable implementation around (that could be used for choice b)) : http://www.timdown.co.uk/jshashtable/ . The described performance gains are promising.

          Show
          Mircea Toma added a comment - - edited Looks like there is a Hashtable implementation around (that could be used for choice b)) : http://www.timdown.co.uk/jshashtable/ . The described performance gains are promising.
          Hide
          Ken Fyten added a comment -

          Philip has completed testing the comp showcase using the latest version of the delta-submit prototype (with all hidden fields converted in the comps). Here are the results:

          delta-submit, what's not working in comp showcase
          *******************************************

          • panelCollapsible doesn't open or close
          • selectBooleanCheckbox firing partial submit, but not maintaining state
          • value of checkbox not being sent in post
          • selectOneMenu not working
          • partial submit fires, but value not being sent in post
          • selectManyListbox not working
          • partial submit fires, but value not being sent in post
          • selectOneRadio not working
          • partial submit fires, but value not being sent in post
          • selectManyCheckbox not working
          • inputText and inputSecret crashing on partial submit
            java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException
            com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:162)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
            root cause
            java.lang.NullPointerException
            com.icesoft.faces.context.BridgeFacesContext$8.servlet(BridgeFacesContext.java:757)
            com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.detectEnvironment(ServletRequestResponse.java:262)
            com.icesoft.faces.context.BridgeFacesContext.processPostback(BridgeFacesContext.java:724)
            com.icesoft.faces.context.View.processPostback(View.java:141)
            com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:67)
            com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
            com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
            com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
            com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
            com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
            com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
            com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
            com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:137)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:
          • selectInputText not showing drop down (maybe due to selectOneMenu not working)
          • popup calendar not rendering
          • chart not changing on type selection (maybe due to selectOneMenu not working)
          • progress bar demo, click on start with standard mode
            javax.faces.FacesException: Please define valid textPosition [top|bottom|left|right|topcenter|bottomcenter|topright|bottomright|embed]
            com.icesoft.faces.component.outputprogress.OutputProgressRenderer.buildLayout(OutputProgressRenderer.java:236)
            com.icesoft.faces.component.outputprogress.OutputProgressRenderer.encodeEnd(OutputProgressRenderer.java:84)
            javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
            com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:370)
            com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
            com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
            com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
            com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
            com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:492)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497)
            com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:282)
            com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159)
            com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
            com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
            com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
            com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19)
            com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
            com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
            com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
            com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
            com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
            com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
            com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
            com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
            com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
            com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:137)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
          • rich text demo page won't load
          • dataPaginator numbered page links not working
          • panelTabSet tab area disappears when clicking on tab
          • js error: window.XDiy#2 failed to insert element: <script id="XDiyEt2dz64bEwY236Kdgg:2:dynamic-code" type="text/javascript">...</script> TypeError: document.getElementById("iceform:icePnlTbSet:0.1") is null
          • popup won't close
          Show
          Ken Fyten added a comment - Philip has completed testing the comp showcase using the latest version of the delta-submit prototype (with all hidden fields converted in the comps). Here are the results: delta-submit, what's not working in comp showcase ******************************************* panelCollapsible doesn't open or close selectBooleanCheckbox firing partial submit, but not maintaining state value of checkbox not being sent in post selectOneMenu not working partial submit fires, but value not being sent in post selectManyListbox not working partial submit fires, but value not being sent in post selectOneRadio not working partial submit fires, but value not being sent in post selectManyCheckbox not working inputText and inputSecret crashing on partial submit java.lang.RuntimeException: wrapped Exception: java.lang.NullPointerException com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:162) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56) root cause java.lang.NullPointerException com.icesoft.faces.context.BridgeFacesContext$8.servlet(BridgeFacesContext.java:757) com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.detectEnvironment(ServletRequestResponse.java:262) com.icesoft.faces.context.BridgeFacesContext.processPostback(BridgeFacesContext.java:724) com.icesoft.faces.context.View.processPostback(View.java:141) com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:67) com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31) com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24) com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16) com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23) com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53) com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26) com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23) com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:137) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java: selectInputText not showing drop down (maybe due to selectOneMenu not working) popup calendar not rendering chart not changing on type selection (maybe due to selectOneMenu not working) progress bar demo, click on start with standard mode javax.faces.FacesException: Please define valid textPosition [top|bottom|left|right|topcenter|bottomcenter|topright|bottomright|embed] com.icesoft.faces.component.outputprogress.OutputProgressRenderer.buildLayout(OutputProgressRenderer.java:236) com.icesoft.faces.component.outputprogress.OutputProgressRenderer.encodeEnd(OutputProgressRenderer.java:84) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861) com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:370) com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358) com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358) com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:492) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:497) com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:282) com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159) com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19) com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132) com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74) com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31) com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24) com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16) com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23) com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53) com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26) com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23) com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:137) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56) rich text demo page won't load dataPaginator numbered page links not working panelTabSet tab area disappears when clicking on tab js error: window.XDiy#2 failed to insert element: <script id="XDiyEt2dz64bEwY236Kdgg:2:dynamic-code" type="text/javascript">...</script> TypeError: document.getElementById("iceform:icePnlTbSet:0.1") is null popup won't close
          Ken Fyten made changes -
          Salesforce Case []
          Assignee Priority P2
          Hide
          Mandeep Hayher added a comment -

          deltasubmit revision# 20198
          server: Tomcat6.0

          Not able to access all components in the component tree. Following categories cannot be tested:
          1) Extended Components
          2) Table
          3) Layout Panels

          Show
          Mandeep Hayher added a comment - deltasubmit revision# 20198 server: Tomcat6.0 Not able to access all components in the component tree. Following categories cannot be tested: 1) Extended Components 2) Table 3) Layout Panels
          Ken Fyten made changes -
          Salesforce Case []
          Assignee Priority P2 P1
          Hide
          Mircea Toma added a comment -

          Serialize triggering element even if is not of 'submit' type since it is no longer serialized together with the rest of the form elements.

          Show
          Mircea Toma added a comment - Serialize triggering element even if is not of 'submit' type since it is no longer serialized together with the rest of the form elements.
          Hide
          Mircea Toma added a comment -

          Refactored panel collapsible to send additional parameters. This makes it possible to access and test the enclosed components.

          Show
          Mircea Toma added a comment - Refactored panel collapsible to send additional parameters. This makes it possible to access and test the enclosed components.
          Hide
          Mircea Toma added a comment -

          Fix NPE that occurs for 'text' elements that do not contain text.

          Show
          Mircea Toma added a comment - Fix NPE that occurs for 'text' elements that do not contain text.
          Hide
          Mircea Toma added a comment -

          These are the components that work now after a few framework and component level fixes:

          panelCollapsible - applied renderer level fix so we can access the enclosed components
          selectOneMenu - applied framework level fix
          selectManyListbox - applied framework level fix
          calendar popup - applied framework level fix
          inputText, inputSecret - applied framework level fix
          chart - selectOneMenu fix makes the chart selection work
          progress bar - the previous fixes seem to have fix this too
          rich text - loads

          These are the components that still need to have the "additional parameters" refactoring applied:
          dataPaginator
          panelTabSet
          panelPopup
          selectBooleanCheckbox
          selectManyCheckbox

          Show
          Mircea Toma added a comment - These are the components that work now after a few framework and component level fixes: panelCollapsible - applied renderer level fix so we can access the enclosed components selectOneMenu - applied framework level fix selectManyListbox - applied framework level fix calendar popup - applied framework level fix inputText, inputSecret - applied framework level fix chart - selectOneMenu fix makes the chart selection work progress bar - the previous fixes seem to have fix this too rich text - loads These are the components that still need to have the "additional parameters" refactoring applied: dataPaginator panelTabSet panelPopup selectBooleanCheckbox selectManyCheckbox
          Hide
          Adnan Durrani added a comment -

          The following components has been refactord.

          -dataPaginator
          -panelTabSet

          Modified: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\datapaginator\DataPaginatorRenderer.java
          Modified: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\paneltabset\PanelTabSetRenderer.java
          Sending content: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\datapaginator\DataPaginatorRenderer.java
          Sending content: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\paneltabset\PanelTabSetRenderer.java
          Completed: At revision: 20371

          Show
          Adnan Durrani added a comment - The following components has been refactord. -dataPaginator -panelTabSet Modified: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\datapaginator\DataPaginatorRenderer.java Modified: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\paneltabset\PanelTabSetRenderer.java Sending content: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\datapaginator\DataPaginatorRenderer.java Sending content: D:\work\development\head\svn\ossrepo\icefaces-ee\scratchpads\deltasubmit\icefaces\component\src\com\icesoft\faces\component\paneltabset\PanelTabSetRenderer.java Completed: At revision: 20371
          Adnan Durrani made changes -
          Link This issue blocks ICE-5318 [ ICE-5318 ]
          Adnan Durrani made changes -
          Link This issue blocks ICE-5318 [ ICE-5318 ]
          Adnan Durrani made changes -
          Link This issue depends on ICE-5318 [ ICE-5318 ]
          Hide
          yip.ng added a comment - - edited

          selectManyCheckbox done.

          Revision: 20381


          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js
          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/SelectManyCheckboxListRenderer.java

          Show
          yip.ng added a comment - - edited selectManyCheckbox done. Revision: 20381 Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/SelectManyCheckboxListRenderer.java
          Hide
          yip.ng added a comment - - edited

          selectBooleanCheckbox done.

          Revision: 20395


          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js
          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/CheckboxRenderer.java

          Show
          yip.ng added a comment - - edited selectBooleanCheckbox done. Revision: 20395 Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/CheckboxRenderer.java
          Ken Fyten made changes -
          Assignee Mircea Toma [ mircea.toma ] Yip Ng [ yip.ng ]
          Hide
          Ken Fyten added a comment -

          Mircea reports that radio-buttons are not working correctly.

          Show
          Ken Fyten added a comment - Mircea reports that radio-buttons are not working correctly.
          Hide
          Mircea Toma added a comment -

          Avoid generating parameters from the server-side document for the elements that normally trigger a form submission. Elements such as input[type=image], input[type=button], input[type=submit], input[type=reset] are serialized during a form submission only if they triggered it. So the fix was to simulate the same behavior on the server side.

          Show
          Mircea Toma added a comment - Avoid generating parameters from the server-side document for the elements that normally trigger a form submission. Elements such as input [type=image] , input [type=button] , input [type=submit] , input [type=reset] are serialized during a form submission only if they triggered it. So the fix was to simulate the same behavior on the server side.
          Hide
          Ken Fyten added a comment -

          QA Testing Report:

          deltasubmit revision# 20413
          Server tomcat6
          Firefix3.5 browser

          Autocomplete doesnot work correctly.

          After selecting a city form the drop downlist that city's details are not displayed at the bottom of the page. Now if the user selects city in the second autocomplete box, the first city details are displayed at the bottom.

          Media
          SEVERE: Exception occured during rendering on http://localhost:8080/component-showcase/block/send-receive-updates [/showcase.jspx]
          javax.faces.FacesException: Problem in renderResponse: javax.faces.el.Evaluation
          Exception: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="#

          {media.style}": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media

          Caused by: javax.faces.el.EvaluationException: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="#{media.style}

          ": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media

          Caused by: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="#

          {media.style}

          ": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media
          at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)

          DataPaginator: Paginator functionality disappears if user click on any button on pagination (next, last etc)
          following seen on the server
          WARNING: DataTable iceform:data has invalid rows attribute.

          Following components couldnot be tested because of radio buttons not working:

          Selection
          Row selection
          progressbar
          Menubar
          Split Panel
          Stacking panel
          Static tabset
          Position Panel: After repositioning Edited rank table does not get updated
          Tooltip not working for provinces
          Gmaps:The controls disappear of user selects a city. Also cannot search a city by entering its name in the input text box
          Buttons & Links scripts were failing but could not reproduce the problem manually (need to investigate)
          Collapsible Panel scripts were failing but could not reproduce the problem manually (need to investigate)
          Confirmation: scripts were failing but could not reproduce the problem manually (need to investigate)

          Regards,
          Mandeep

          Show
          Ken Fyten added a comment - QA Testing Report: deltasubmit revision# 20413 Server tomcat6 Firefix3.5 browser Autocomplete doesnot work correctly. After selecting a city form the drop downlist that city's details are not displayed at the bottom of the page. Now if the user selects city in the second autocomplete box, the first city details are displayed at the bottom. Media SEVERE: Exception occured during rendering on http://localhost:8080/component-showcase/block/send-receive-updates [/showcase.jspx] javax.faces.FacesException: Problem in renderResponse: javax.faces.el.Evaluation Exception: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="# {media.style}": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media Caused by: javax.faces.el.EvaluationException: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="#{media.style} ": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media Caused by: javax.el.ELException: /WEB-INF/includes/examples/custom/outputMedia.jspx @76,49 style="# {media.style} ": Error reading 'style' on type org.icefaces.application.showcase.view.bean.examples.component.outputMedia.Media at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76) DataPaginator: Paginator functionality disappears if user click on any button on pagination (next, last etc) following seen on the server WARNING: DataTable iceform:data has invalid rows attribute. Following components couldnot be tested because of radio buttons not working: Selection Row selection progressbar Menubar Split Panel Stacking panel Static tabset Position Panel: After repositioning Edited rank table does not get updated Tooltip not working for provinces Gmaps:The controls disappear of user selects a city. Also cannot search a city by entering its name in the input text box Buttons & Links scripts were failing but could not reproduce the problem manually (need to investigate) Collapsible Panel scripts were failing but could not reproduce the problem manually (need to investigate) Confirmation: scripts were failing but could not reproduce the problem manually (need to investigate) Regards, Mandeep
          Hide
          yip.ng added a comment -

          Radio buttons fixed.

          Revision: 20415


          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js
          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectOneRadio.java
          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/RadioRenderer.java

          Show
          yip.ng added a comment - Radio buttons fixed. Revision: 20415 Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/extras_util.js Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectOneRadio.java Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/RadioRenderer.java
          Hide
          yip.ng added a comment - - edited

          Problem in outputMedia: can't reproduce. See it working at http://screencast.com/t/Y2M4ZTY3MWE
          (Fixed by fixing radio button problem?)

          Show
          yip.ng added a comment - - edited Problem in outputMedia: can't reproduce. See it working at http://screencast.com/t/Y2M4ZTY3MWE (Fixed by fixing radio button problem?)
          Ken Fyten made changes -
          Salesforce Case []
          Assignee Yip Ng [ yip.ng ] Mircea Toma [ mircea.toma ]
          Adnan Durrani made changes -
          Link This issue depends on ICE-5333 [ ICE-5333 ]
          Adnan Durrani made changes -
          Link This issue depends on ICE-5334 [ ICE-5334 ]
          Hide
          yip.ng added a comment -

          tooltip panel fixed.

          Revision: 20422


          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/tooltip_panelpopup.js

          Show
          yip.ng added a comment - tooltip panel fixed. Revision: 20422 Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/bridge/lib/extras/tooltip_panelpopup.js
          Adnan Durrani made changes -
          Link This issue depends on ICE-5335 [ ICE-5335 ]
          Hide
          Mircea Toma added a comment -

          Fixed checkbox delta-submit.

          The previous algorithm for server-side parameter generation was not able to detect unchecked checkboxes. By using 'ice.event.captured' event parameter the server-side is now able to detect when a checkbox or a group of checkboxes are unchecked and properly generate the necessary parameters.
          Also, for many-checkboxes submit the captured changed elements (using onchange listeners) are cleared to avoid serializing input elements twice.

          Show
          Mircea Toma added a comment - Fixed checkbox delta-submit. The previous algorithm for server-side parameter generation was not able to detect unchecked checkboxes. By using 'ice.event.captured' event parameter the server-side is now able to detect when a checkbox or a group of checkboxes are unchecked and properly generate the necessary parameters. Also, for many-checkboxes submit the captured changed elements (using onchange listeners) are cleared to avoid serializing input elements twice.
          Hide
          yip.ng added a comment -

          From Mandeep:

          Popup Panel: use Modal popup panel then use Draggable panel. But both Draggable and Modal popup are shown.

          Show
          yip.ng added a comment - From Mandeep: Popup Panel: use Modal popup panel then use Draggable panel. But both Draggable and Modal popup are shown.
          Hide
          yip.ng added a comment -

          Fixed. Problem is not with popup panel, but with button events.

          Revision: 20439


          Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/ButtonRenderer.java

          Show
          yip.ng added a comment - Fixed. Problem is not with popup panel, but with button events. Revision: 20439 Modified : /icefaces-ee/scratchpads/deltasubmit/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/ButtonRenderer.java
          Ken Fyten made changes -
          Link This issue depends on ICE-5339 [ ICE-5339 ]
          Hide
          Adnan Durrani added a comment -

          There is another problem has been noticed with the button component. Please see the attached snapshot.

          Show
          Adnan Durrani added a comment - There is another problem has been noticed with the button component. Please see the attached snapshot.
          Adnan Durrani made changes -
          Attachment Button Problem.jpg [ 12187 ]
          Adnan Durrani made changes -
          Link This issue depends on ICE-5338 [ ICE-5338 ]
          Hide
          Mircea Toma added a comment - - edited

          The fix applied makes sure that submitting type elements found among the changed elements are not serialized.

          Show
          Mircea Toma added a comment - - edited The fix applied makes sure that submitting type elements found among the changed elements are not serialized.
          Mircea Toma made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Hide
          Mircea Toma added a comment -

          Serialize the element that invokes a full submit (iceSubmit) during a keypress event.

          Show
          Mircea Toma added a comment - Serialize the element that invokes a full submit (iceSubmit) during a keypress event.
          Ken Fyten made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Assignee Priority P1
          Assignee Mircea Toma [ mircea.toma ] Ken Fyten [ ken.fyten ]
          Ken Fyten made changes -
          Salesforce Case []
          Fix Version/s 2.0-Beta [ 10032 ]
          Fix Version/s 1.8.2-EE-GA_P01 [ 10220 ]
          Fix Version/s 1.8.3 [ 10211 ]
          Hide
          Ken Fyten added a comment - - edited

          Okay, after review it seems that the approach taken with this prototype is not going to be feasible to pursue further, or possibly include in the product in the future. Work is stopped on this prototype.

          As it stands, the prototype has the following:

          Key Limitations

          • Only works with ice: components (not h:, or other 3rd party or custom components) as it requires specific component changes to function correctly. This is deemed to be a fatal requirement due to the increased complexities involved in supporting the ice components in both "delta submit" and normal submit modes.
          • Not configurable. The prototype always uses Delta-submit mode, and cannot be configured not to.

          Known Issues:

          • QA testing has found that the regression tests associated with JIRA list below are failing with the prototype. These issues will remain unresolved:

          Navigation-redirect - not working
          Navigation-forward - not working
          Navigation-facelet - not working
          ICE-751- selectManyCheckBox acting like selectOneRadio
          ICE-4011 - calendar AM- PM not working
          ICE-3627 - <h:inputText valueChangeListener="#

          {bean.listener}

          "
          ValueChaneListener not working
          ICE-3530 - when alphabet is entered in the autocomplete textbox Number Format exception is thrown
          ICE-3051 - navigation not working
          ICE-2031 - remove selection not working for last selected item in the selectManyMenu
          ICE-1993 - page is not rendered correctly. One full panelGrid is missing on the page
          ICE-5118 - Number Format exception when removing a tab, that was added by the user.

          Some other exceptions seen in exception log
          ICE-3530 - Number Format exception
          ICE-3332 - NullPointer Exception
          ICE-3028 - RunTime Exception

          However, our sample applications (Component Showcase, Auction Monitor, Address demo) all seem to function well.

          The prototype may be useful as a demonstration of the kind of bandwidth reduction that can be expected from this type of "delta-submit" feature, but should not be used in anything other than an experimental context.

          We are planning on approaching the delta-submit feature from a different angle for ICEfaces 2.0 with a solution that will be completely transparent to the application and component developers, be configurable, etc.

          Show
          Ken Fyten added a comment - - edited Okay, after review it seems that the approach taken with this prototype is not going to be feasible to pursue further, or possibly include in the product in the future. Work is stopped on this prototype. As it stands, the prototype has the following: Key Limitations Only works with ice: components (not h:, or other 3rd party or custom components) as it requires specific component changes to function correctly. This is deemed to be a fatal requirement due to the increased complexities involved in supporting the ice components in both "delta submit" and normal submit modes. Not configurable. The prototype always uses Delta-submit mode, and cannot be configured not to. Known Issues: QA testing has found that the regression tests associated with JIRA list below are failing with the prototype. These issues will remain unresolved: Navigation-redirect - not working Navigation-forward - not working Navigation-facelet - not working ICE-751 - selectManyCheckBox acting like selectOneRadio ICE-4011 - calendar AM- PM not working ICE-3627 - <h:inputText valueChangeListener="# {bean.listener} " ValueChaneListener not working ICE-3530 - when alphabet is entered in the autocomplete textbox Number Format exception is thrown ICE-3051 - navigation not working ICE-2031 - remove selection not working for last selected item in the selectManyMenu ICE-1993 - page is not rendered correctly. One full panelGrid is missing on the page ICE-5118 - Number Format exception when removing a tab, that was added by the user. Some other exceptions seen in exception log ICE-3530 - Number Format exception ICE-3332 - NullPointer Exception ICE-3028 - RunTime Exception However, our sample applications (Component Showcase, Auction Monitor, Address demo) all seem to function well. The prototype may be useful as a demonstration of the kind of bandwidth reduction that can be expected from this type of "delta-submit" feature, but should not be used in anything other than an experimental context. We are planning on approaching the delta-submit feature from a different angle for ICEfaces 2.0 with a solution that will be completely transparent to the application and component developers, be configurable, etc.
          Ken Fyten made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Incomplete [ 4 ]
          Ken Fyten made changes -
          Salesforce Case []
          Fix Version/s 2.0-Alpha3 [ 10032 ]
          Assignee Ken Fyten [ ken.fyten ]
          Hide
          Ken Fyten added a comment -

          This feature is available in ICEfaces 2.0.

          Show
          Ken Fyten added a comment - This feature is available in ICEfaces 2.0.
          Ken Fyten made changes -
          Link This issue duplicates ICE-5361 [ ICE-5361 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Mircea Toma
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: