thanks Deepak Dixit for this improvement, end user will appreciate ;)
Nicolas Le 03/04/2012 10:41, [hidden email] a écrit : > Author: jleroux > Date: Tue Apr 3 08:41:06 2012 > New Revision: 1308751 > > URL: http://svn.apache.org/viewvc?rev=1308751&view=rev > Log: > A patch from Deepak Dixit for "Auto-completer request should be async." https://issues.apache.org/jira/browse/OFBIZ-4780 > > Currently auto-completer uses sync call to prepare auto-completer source (result list). > Due to this user can't perform any other operation on lookup field and user should have to wait until response came. > In general, synchronous requests should never be used because they tend to block the execution of anything else on the page (or even the entire browser UI), which isn't good. > Also ajax-loader image not display on google chrome browser due to sync request. > > Need to use async request for auto-completer. > > Modified: > ofbiz/trunk/framework/images/webapp/images/selectall.js > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > > Modified: ofbiz/trunk/framework/images/webapp/images/selectall.js > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/selectall.js?rev=1308751&r1=1308750&r2=1308751&view=diff > ============================================================================== > --- ofbiz/trunk/framework/images/webapp/images/selectall.js (original) > +++ ofbiz/trunk/framework/images/webapp/images/selectall.js Tue Apr 3 08:41:06 2012 > @@ -17,6 +17,9 @@ > * under the License. > */ > > +//Define global variable to store last auto-completer request object (jqXHR). > +var LAST_AUTOCOMP_REF = null; > + > // Check Box Select/Toggle Functions for Select/Toggle All > > function toggle(e) { > @@ -412,8 +415,15 @@ function ajaxAutoCompleter(areaCsvString > jQuery.ajax({ > url: url, > type: "post", > - async: false, > data: {term : request.term}, > + beforeSend: function (jqXHR, settings) { > + //If LAST_AUTOCOMP_REF is not null means an existing ajax auto-completer request is in progress, so need to abort them to prevent inconsistent behavior of autocompleter > + if (LAST_AUTOCOMP_REF != null) { > + var oldRef = LAST_AUTOCOMP_REF; > + oldRef.abort(); > + } > + LAST_AUTOCOMP_REF= jqXHR; > + }, > success: function(data) { > // reset the autocomp field > autocomp = undefined; > > Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1308751&r1=1308750&r2=1308751&view=diff > ============================================================================== > --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original) > +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Tue Apr 3 08:41:06 2012 > @@ -872,7 +872,14 @@ public class RequestHandler { > try { > resp.flushBuffer(); > } catch (java.io.IOException e) { > - throw new RequestHandlerException("Error flushing response buffer", e); > + /*If request is an ajax request and user calls abort() method for on ajax request then skip throwing of RequestHandlerException . > + Specially its done for async ajax auto completer call, if we call abort() method on ajax request then its showing broken pipe exception on console, > + because request is aborted by client (browser).*/ > + if (!"XMLHttpRequest".equals(req.getHeader("X-Requested-With"))) { > + throw new RequestHandlerException("Error flushing response buffer", e); > + } else { > + if (Debug.verboseOn()) Debug.logVerbose("Skip Request Handler Exception for ajax request.", module); > + } > } > > String vname = (String) req.getAttribute("_CURRENT_VIEW_"); > > -- Nicolas MALIN Consultant Tél : 06.17.66.40.06 Site projet : http://www.neogia.org/ ------- Société LibrenBerry Tél : 02.48.02.56.12 Site : http://www.librenberry.net/ |
+1.
-- Rishi Solanki Manager, Enterprise Software Development HotWax Media Pvt. Ltd. Direct: +91-9893287847 http://www.hotwaxmedia.com On Tue, Apr 3, 2012 at 2:18 PM, Nicolas Malin <[hidden email] > wrote: > thanks Deepak Dixit for this improvement, end user will appreciate ;) > > Nicolas > > Le 03/04/2012 10:41, [hidden email] a écrit : > > Author: jleroux >> Date: Tue Apr 3 08:41:06 2012 >> New Revision: 1308751 >> >> URL: http://svn.apache.org/viewvc?**rev=1308751&view=rev<http://svn.apache.org/viewvc?rev=1308751&view=rev> >> Log: >> A patch from Deepak Dixit for "Auto-completer request should be async." >> https://issues.apache.org/**jira/browse/OFBIZ-4780<https://issues.apache.org/jira/browse/OFBIZ-4780> >> >> Currently auto-completer uses sync call to prepare auto-completer source >> (result list). >> Due to this user can't perform any other operation on lookup field and >> user should have to wait until response came. >> In general, synchronous requests should never be used because they tend >> to block the execution of anything else on the page (or even the entire >> browser UI), which isn't good. >> Also ajax-loader image not display on google chrome browser due to sync >> request. >> >> Need to use async request for auto-completer. >> >> Modified: >> ofbiz/trunk/framework/images/**webapp/images/selectall.js >> ofbiz/trunk/framework/webapp/**src/org/ofbiz/webapp/control/** >> RequestHandler.java >> >> Modified: ofbiz/trunk/framework/images/**webapp/images/selectall.js >> URL: http://svn.apache.org/viewvc/**ofbiz/trunk/framework/images/** >> webapp/images/selectall.js?**rev=1308751&r1=1308750&r2=** >> 1308751&view=diff<http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/selectall.js?rev=1308751&r1=1308750&r2=1308751&view=diff> >> ==============================**==============================** >> ================== >> --- ofbiz/trunk/framework/images/**webapp/images/selectall.js (original) >> +++ ofbiz/trunk/framework/images/**webapp/images/selectall.js Tue Apr 3 >> 08:41:06 2012 >> @@ -17,6 +17,9 @@ >> * under the License. >> */ >> >> +//Define global variable to store last auto-completer request object >> (jqXHR). >> +var LAST_AUTOCOMP_REF = null; >> + >> // Check Box Select/Toggle Functions for Select/Toggle All >> >> function toggle(e) { >> @@ -412,8 +415,15 @@ function ajaxAutoCompleter(**areaCsvString >> jQuery.ajax({ >> url: url, >> type: "post", >> - async: false, >> data: {term : request.term}, >> + beforeSend: function (jqXHR, settings) { >> + //If LAST_AUTOCOMP_REF is not null means an >> existing ajax auto-completer request is in progress, so need to abort them >> to prevent inconsistent behavior of autocompleter >> + if (LAST_AUTOCOMP_REF != null) { >> + var oldRef = LAST_AUTOCOMP_REF; >> + oldRef.abort(); >> + } >> + LAST_AUTOCOMP_REF= jqXHR; >> + }, >> success: function(data) { >> // reset the autocomp field >> autocomp = undefined; >> >> Modified: ofbiz/trunk/framework/webapp/**src/org/ofbiz/webapp/control/** >> RequestHandler.java >> URL: http://svn.apache.org/viewvc/**ofbiz/trunk/framework/webapp/** >> src/org/ofbiz/webapp/control/**RequestHandler.java?rev=** >> 1308751&r1=1308750&r2=1308751&**view=diff<http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1308751&r1=1308750&r2=1308751&view=diff> >> ==============================**==============================** >> ================== >> --- ofbiz/trunk/framework/webapp/**src/org/ofbiz/webapp/control/**RequestHandler.java >> (original) >> +++ ofbiz/trunk/framework/webapp/**src/org/ofbiz/webapp/control/**RequestHandler.java >> Tue Apr 3 08:41:06 2012 >> @@ -872,7 +872,14 @@ public class RequestHandler { >> try { >> resp.flushBuffer(); >> } catch (java.io.IOException e) { >> - throw new RequestHandlerException("Error flushing response >> buffer", e); >> + /*If request is an ajax request and user calls abort() >> method for on ajax request then skip throwing of RequestHandlerException . >> + Specially its done for async ajax auto completer call, if >> we call abort() method on ajax request then its showing broken pipe >> exception on console, >> + because request is aborted by client (browser).*/ >> + if (!"XMLHttpRequest".equals(req.** >> getHeader("X-Requested-With"))**) { >> + throw new RequestHandlerException("Error flushing >> response buffer", e); >> + } else { >> + if (Debug.verboseOn()) Debug.logVerbose("Skip Request >> Handler Exception for ajax request.", module); >> + } >> } >> >> String vname = (String) req.getAttribute("_CURRENT_**VIEW_"); >> >> >> > > -- > Nicolas MALIN > Consultant > Tél : 06.17.66.40.06 > Site projet : http://www.neogia.org/ > ------- > Société LibrenBerry > Tél : 02.48.02.56.12 > Site : http://www.librenberry.net/ > > |
Free forum by Nabble | Edit this page |