Re: "You backtracked too far" error after closing AjaxModalDialog and clicking on a link on the page
Re: "You backtracked too far" error after closing AjaxModalDialog and clicking on a link on the page
- Subject: Re: "You backtracked too far" error after closing AjaxModalDialog and clicking on a link on the page
- From: Chuck Hill <email@hidden>
- Date: Wed, 13 Jul 2011 17:24:30 -0500
They don't need to be, it is good style IMO to make them void if they don't need to return anything.
Chuck
On 2011-07-13, at 4:58 PM, John & Kim Larson wrote:
> I thought your action methods had to be void methods for Ajax actions, otherwise this happens. ?
>
> jal
>
> Sent from my iPhone
>
> On Jul 12, 2011, at 10:58 PM, Chuck Hill <email@hidden> wrote:
>
>> On Jul 12, 2011, at 4:29 PM, Ricardo J. Parada wrote:
>>> On Jul 12, 2011, at 5:53 PM, Chuck Hill wrote:
>>>> On Jul 12, 2011, at 2:45 PM, Ricardo J. Parada wrote:
>>>>> On Jul 12, 2011, at 4:52 PM, Chuck Hill wrote:
>>>>>
>>>>>> Hi Ricardo,
>>>>>>
>>>>>> On Jul 12, 2011, at 1:35 PM, Ricardo J. Parada wrote:
>>>>>>>
>>>>>>> Does anybody have an idea what could be causing this problem? The user clicks on an AjaxModalDialogOpener which opens the dialog. Then the user does a whole bunch of stuff in the dialog that involves many clicks
>>>>>>
>>>>>> Does it still happen if they don't make so many clicks?
>>>>>
>>>>> If they make a few clicks then it works okay.
>>>>>
>>>>>
>>>>>>> then finally clicks a DONE link to close the dialog.
>>>>>>
>>>>>> Are all of these links and clicks Ajax actions?
>>>>>>
>>>>>
>>>>> Yes, they are clicking on links generated by AjaxSubmitButton components to be exact. :-)
>>>>
>>>> And you are certain that there are no /wo/ or /wa/ requests mixed in here?
>>>
>>> I set this property in my Properties.dev:
>>>
>>> log4j.logger.er.extensions.ERXApplication.RequestHandling=DEBUG
>>>
>>> and then I looked at all the uri's of the requests coming in. They have /ajax/ in there and when the dialog first comes up I see a few /_wr_/ and I guess the browser caches those since I don't see requests for those anymore on subsequent requests after the dialog is displayed.
>>
>> Those should be OK, they won't affect the page caches.
>>
>>
>>> All the requests for the "many clicks" I mentioned have /ajax/ in them. I don't see any /wo/ requests mixed in.
>>>
>>> Also I set a breakpoint in ERXAjaxSession.java at the only place it calls super.savePage() where I assume the current page would be saved but I never hit the breakpoint. I would think that regular component requests would be generating new context IDs and therefore saving the page in the cache for those context IDs. But I don't see the page getting saved. :-/
>>
>> Yeah, that is what I would expect too.
>>
>>
>>>>>>> The dialog has a closeUpdateContainerID bound with the id of an ajax update container to refresh, which it does refresh upon closing the dialog. But then the user clicks on a link on the page that is outside the refreshed AjaxUpdateContainer and the app displays the error "You backtracked too far. The application backtracking limit of 30 has been exceeded."
>>>>>>
>>>>>> Ajax links or regular component actions links? I do what seems to be the same thing (except maybe the "does a whole bunch of stuff in the dialog") and have not had any problems.
>>>>>>
>>>>>
>>>>> They are regular component action links. The context ID for which the page is being restored is 22.
>>>>
>>>> The original URL is 21?
>>>>
>>>
>>> Well, I just put in there a <wo:link string="test" action="$test"/> and by inspecting that link after I close the ajax modal dialog and the update container refreshes the href for the link is:
>>>
>>> http://192.168.1.9:53295/cgi-bin/WebObjects/Phynance.woa/wo/EmqPpwSYBiOiS7PPSLDXzw/8.0.0.9.1.1.13.1.5.1.2.1.1.3.51
>>>
>>> and clicking that generates the "You backtracked too far" error.
>>
>> What is the context ID shown in the browser's location URL?
>>
>>
>>>>>> The key to tracking this down is to know if it is the Ajax or the regular page cache that is missing the component.
>>>>>>
>>>>>
>>>>> I'm stepping through the restorePageForContextID() in ERXAjaxSession.java but I'm not sure what to look for.
>>>>
>>>>
>>>> Sorry, I just meant if the URL that caused the error was a /ajax/ or /wo/ URL. It sounds like a /wo/ URL so that suggests to me that something in your dialog is generating /wo/ or /wa/ requests that are pushing the page out of the standard page cache.
>>>
>>> I did not see any /wo/ nor /wa/ requests. They are all /ajax/ requests.
>>>
>>> Maybe I'll try to create a test Wonder app with an ajax modal dialog with a single ajax link in it that displays the current time when clicked... Then I can click it many many times. Then close the dialog and then click on a link on the page afterwards to see if I can reproduce.
>>
>> I'd be interested if you can reproduce it. The only think that I can think of is that the Ajax code is getting confused and using the regular page cache. But then I would expect to see calls to super.savePage.
>>
>> The only other thing that I can think of is that the session is getting switched, but with the session in the URL that should not happen.
>>
>>
>> Chuck
>>
>> --
>> Chuck Hill Senior Consultant / VP Development
>>
>> Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
>> http://www.global-village.net/products/practical_webobjects
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
--
Chuck Hill Senior Consultant / VP Development
Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden