[ 
https://jira.jboss.org/jira/browse/RF-3801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Dubovsky closed RF-3801.
----------------------------------

    Assignee: Alexander Dubovsky  (was: Tsikhon Kuprevich)


> 'multi select' slows down the AJAX submit of a Form while ha
> ------------------------------------------------------------
>
>                 Key: RF-3801
>                 URL: https://jira.jboss.org/jira/browse/RF-3801
>             Project: RichFaces
>          Issue Type: Feature Request
>    Affects Versions: 3.0.1
>         Environment: Solaris 10x
> Java 6
> JBOSS 4.2.2.
>            Reporter: Judy Mercer
>            Assignee: Alexander Dubovsky
>             Fix For: 3.2.2
>
>
> With IE (both 6.x and 7.x), a performance problem arises performing an 
> AJAXSubmit of a form having a "multi select" TAG with thousands of items. 
> Activating the AJAX tracing with IE, I noticed that while the multi select is 
> populated with 2000 items, the request phase is performed by AJAX in more 
> than 5 seconds (with a pentium core duo 2GHz), while Firefox takes about 
> nothing. 
> The cause: 
> In my opinion the problem is caused by the way AJAX javascript within IE is 
> performing the preparation of the request. In detail, each time an AJAX 
> submit is performed, the application code calls the function 
> A4J.AJAX.Submit(). Following the sequence of commands... 
> A4J.AJAX.Submit->A4J.AJAX.SubmitRequest->A4J.Query->appendFormControls->'select-multiple'
>  
> ...I found that the time is spent inside 'select-multiple' function whose 
> purpose is basically to add the selected items to the list of parameters of 
> the request. It consumes all the time looping on the child nodes of the DOM 
> SELECT object. 
> A proposed solution: 
> to change the loop using the "options" collection instead of the generic 
> "childNodes" collection. The change basically does what done in the case 
> "select-multiple" of method Sarissa.formToQueryString() 
> example: 
> richfaces-impl-3.2.1.GA.jar/org/ajax4jsf/javascript/scripts/AJAX.js.: 
> Code: 
>       ...
>       'select-multiple' : function(control){
>             var cname = control.name;
>             var childs = control.childNodes;
>             for( var i=0 ;i< childs.length;i++ ){
>                   var child=childs
> ;
>                   if( child.tagName == 'OPTGROUP' ){
>                         var options = child.childNodes;
>                         for(var j=0; j < options.length; j++){
>                               this._addOption(cname, options[j]);
>                         }
>                   } else {
>                         this._addOption(cname, child);
>                   }
>             }
>       },
>        
> is more efficient rewritten in this way: 
> Code: 
>       'select-multiple' : function(control){
>             var options = control.options;
>             for( var i=0 ;i< control.length;i++ ){
>                   var option = options
> ;
>                   this._addOption(cname, option);
>             }
>       },
>        
> Note: the change keeps support of 'OPTGROUP' tags

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to