Hi Jean-François,

so you suggest using RPC to circumvent takeValuesFromRequest and invokeAction 
triggered by the AjaxSubmitButton?  

  
> Am 20.01.2017 um 14:46 schrieb Jean-François Veillette 
> <jean_francois_veille...@yahoo.ca>:
> 
> Thinking about it  …
> It seems the problem partly come from having a repetition or some kind or a 
> form of sequential access to your textfield bindings.
> Maybe you could avoid that by pointing directly to it by means of RPC?  So 
> use an AjaxProxy object, that talk to your server-side controller object, 
> this object most likely have direct access to the object/attribute you are 
> referring without having to go through the loop or some kind of sequential 
> access.
> 
> So you would most likely have to write a JS object that will take care of 
> validations on your page, responsible for communicating (RPC) with server and 
> validating values.  Place the AjaxProxy object early in the components tree 
> so that it would be found quickly (not nested inside a loop, or at least 
> found early in a loop).
> 
> just some thought,
> 
> jfv
> 
> 
>> On Jan 19, 2017, at 10:32, René Bock <b...@salient-doremus.de> wrote:
>> 
>> Hi list,
>> 
>> In our framework, we are using partial ajax requests to validate input field 
>> as soon as the user leaves the text field.
>> 
>> In a very complex form, we noticed that the response time of the partial 
>> requests depends on the position of the input field. The validation logic is 
>> encapsulated in InputFieldComponent, and the form component is mainly a 
>> WORepetition of these InputFieldComponents.  
>> 
>> The range of the measured  response times is something between 60 ms for the 
>> first component and 1200 ms for the last component in the form.   The 
>> longest response time is about the  same as I would do a normal form submit.
>> 
>> 
>> Did anybody noticed a similar phenomena?
>> 
>> 
>> Anyway, my questions are:
>> 
>> 1. Why does the position of a field make a difference at all?  
>> 2. Is there a possibility to speed up things?
>> 
>> 
>> Here my observations:
>> 
>> A profiling session reveals, that a lot of time is spent in 
>> takeFormValuesFromRequest and invokeAction.
>> 
>> 
>> Answer for #1: As soon as ajaxSubmitButton which triggered the request is 
>> found, invokeAction is somehow "interrupted".  (see 
>> ERXAjaxContext.wasFormSubmitted...)  
>> 
>> 
>> As it is possible to eliminate unnecessary component tree traversal after 
>> the right ajaxSubmitButton.action is found,  it should also be possible to 
>> ignore the other irrelevant childComponents.
>> 
>> 
>> ASSUMPTION: 
>> a) for partial submits, we get only one form value (i.e the 
>> partialFormSenderID).  
>> b) the partialFormSenderID is the path of the sender component in the 
>> overall component hierarchy.
>> 
>> IDEA:  for the component hierarchy tree traversal, we may ignore child 
>> components not on the path to the partialFormSender.
>> 
>> 
>> Solution (proof of concept) for #2: In ERXWORepetition, I changed 
>> takeFormValuesFromRequest and invokeAction as follows:
>> 
>> 
>> public void takeValuesFromRequest(WORequest worequest, WOContext wocontext) {
>> WOComponent wocomponent = wocontext.component();
>> String partialFormSenderID = 
>> ERXAjaxApplication.partialFormSenderID(worequest); 
>> 
>> Context context = createContext(wocomponent);
>> 
>> int count = _count(context, wocomponent);
>> boolean checkHashCodes = checkHashCodes(wocomponent);
>> 
>> for (int index = 0; index < count; index++) {
>> _prepareForIterationWithIndex(context, index, wocontext, wocomponent, 
>> checkHashCodes);
>>      if(partialFormSenderID == null || 
>> partialFormSenderID.startsWith(wocontext.elementID())) {  // NO RECURSION if 
>> component[index] does not match senderID 
>> super.takeValuesFromRequest(worequest, wocontext);
>> }
>> }
>> if (count > 0) {
>> _cleanupAfterIteration(count, wocontext, wocomponent);
>> }
>> }
>> 
>> invokeAction is patched in similar way.
>> 
>> The result is, that the ajax request at the bottom of the page takes now 60 
>> ms instead of 1200ms :-)
>> Unfortunately, this is not a general solution. There are scenarios, there 
>> invokeAction will not invoke any actions at all :-(
>> 
>> Has anybody an idea for a general solution?  Maybe a completely different 
>> approach?
>> 
>> 
>> 
>> Best regards (and sorry for this long post)
>> 
>> 
>> René Bock
>> 
>> --
>> Phone: +49 69 650096 18
>> 
>> salient GmbH, Lindleystraße 12, 60314 Frankfurt
>> Main: +49 69 65 00 96 0  |  http://www.salient-doremus.de | 
>> http://www.openforms.de
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca
>> 
>> This email sent to jean_francois_veille...@yahoo.ca
> 

Mit freundlichen Grüßen 

        René Bock

--
Telefon: +49 69 650096 18

salient GmbH, Lindleystraße 12, 60314 Frankfurt
Telefon Zentrale: 069 / 65 00 96 - 0  |  www.salient-doremus.de


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to