Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.0-Beta1
-
Fix Version/s: 2.0.0
-
Component/s: None
-
Labels:None
-
Environment:Liferay 6.0.4 + PortletFaces-Bridge 2.0.0-BETA1 + ICEfaces 2.0 trunk revision 22133
Description
Please refer to the attached portlet for a way to reproduce this one.
When the view is initially rendered with an HTTP-GET, the following <form> appears in the rendered markup of the page:
<form name="v31jf08" method="post" id="v31jf08" action="http://localhost:8080/web/guest/ice2?_1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4__facesViewId=%2Fxhtml%2FportletViewMode.xhtml&p_auth=nFDd6uMq&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=1&p_p_mode=view&p_p_state=normal">
<input type="hidden" value="v31jf08" name="v31jf08">
<input type="hidden" value="http://localhost:8080/web/guest/ice2?p_p_cacheability=cacheLevelPage&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=2&p_p_mode=view&p_p_state=normal" name="javax.faces.encodedURL">
<span id="v31jf08hdnFldsDiv">
<input type="hidden" name="1360817547:f2:j_idcl">
<input type="hidden" name="1360817547:f2:j_id1360817547:f2:dateOfBirthsp">
</span>
<input type="hidden" autocomplete="off" value="-5481536192991678120:-511719377066662166" id="javax.faces.ViewState" name="javax.faces.ViewState">
</form>
But after typing "32801" in the PostalCode field, the DOM-replacement is this:
<form action="http://localhost:8080/web/guest/ice2?_1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4__facesViewId=%2Fxhtml%2FportletViewMode.xhtml&p_auth=nFDd6uMq&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=1&p_p_mode=view&p_p_state=normal" id="v31jf08" method="post" name="v31jf08">
<input name="v31jf08" type="hidden" value="v31jf08" />
<input name="javax.faces.encodedURL" type="hidden" value="http://localhost:8080/web/guest/ice2?p_p_cacheability=cacheLevelPage&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=2&p_p_mode=view&p_p_state=normal" />
<input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState" type="hidden" value="-5481536192991678120:-511719377066662166" />
<span id="v31jf08hdnFldsDiv">
<input name="1360817547:f2:j_idcl" type="hidden" />
<input name="1360817547:f2:j_id1360817547:f2:dateOfBirthsp" type="hidden" />
</span>
</form>
Even though the form is essentially the same, the order of elements, and the order of attributes on elements is different. This is causing a DOM-diff of the form and an unnecessary incremental page update.
When the view is initially rendered with an HTTP-GET, the following <form> appears in the rendered markup of the page:
<form name="v31jf08" method="post" id="v31jf08" action="http://localhost:8080/web/guest/ice2?_1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4__facesViewId=%2Fxhtml%2FportletViewMode.xhtml&p_auth=nFDd6uMq&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=1&p_p_mode=view&p_p_state=normal">
<input type="hidden" value="v31jf08" name="v31jf08">
<input type="hidden" value="http://localhost:8080/web/guest/ice2?p_p_cacheability=cacheLevelPage&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=2&p_p_mode=view&p_p_state=normal" name="javax.faces.encodedURL">
<span id="v31jf08hdnFldsDiv">
<input type="hidden" name="1360817547:f2:j_idcl">
<input type="hidden" name="1360817547:f2:j_id1360817547:f2:dateOfBirthsp">
</span>
<input type="hidden" autocomplete="off" value="-5481536192991678120:-511719377066662166" id="javax.faces.ViewState" name="javax.faces.ViewState">
</form>
But after typing "32801" in the PostalCode field, the DOM-replacement is this:
<form action="http://localhost:8080/web/guest/ice2?_1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4__facesViewId=%2Fxhtml%2FportletViewMode.xhtml&p_auth=nFDd6uMq&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=1&p_p_mode=view&p_p_state=normal" id="v31jf08" method="post" name="v31jf08">
<input name="v31jf08" type="hidden" value="v31jf08" />
<input name="javax.faces.encodedURL" type="hidden" value="http://localhost:8080/web/guest/ice2?p_p_cacheability=cacheLevelPage&p_p_col_count=1&p_p_col_id=column-1&p_p_id=1_WAR_icefaces2xcompatportlet_INSTANCE_Fpb4&p_p_lifecycle=2&p_p_mode=view&p_p_state=normal" />
<input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState" type="hidden" value="-5481536192991678120:-511719377066662166" />
<span id="v31jf08hdnFldsDiv">
<input name="1360817547:f2:j_idcl" type="hidden" />
<input name="1360817547:f2:j_id1360817547:f2:dateOfBirthsp" type="hidden" />
</span>
</form>
Even though the form is essentially the same, the order of elements, and the order of attributes on elements is different. This is causing a DOM-diff of the form and an unnecessary incremental page update.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
It looks like the cause of the diff is the javax.faces.ViewState moving within the form. I will reproduce and investigate.
Show
Ted Goddard
added a comment - It looks like the cause of the diff is the javax.faces.ViewState moving within the form. I will reproduce and investigate.
Removed code that was rendering ViewState input hidden field during postback. This stops ICEfaces from generating an update for the parent 'form' element. In case the form is updated the ViewState input element is restored by the bridge (see
ICE-5691).