Details
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 -
Salesforce Case | [] | |
Assignee Priority | P2 |
Ken Fyten
made changes -
Salesforce Case | [] | |
Assignee Priority | P2 | P1 |
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 ] |
Ken Fyten
made changes -
Assignee | Mircea Toma [ mircea.toma ] | Yip Ng [ yip.ng ] |
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 ] |
Adnan Durrani
made changes -
Link | This issue depends on ICE-5335 [ ICE-5335 ] |
Ken Fyten
made changes -
Link | This issue depends on ICE-5339 [ ICE-5339 ] |
Adnan Durrani
made changes -
Attachment | Button Problem.jpg [ 12187 ] |
Adnan Durrani
made changes -
Link | This issue depends on ICE-5338 [ ICE-5338 ] |
Mircea Toma
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
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 ] |
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 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
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.