I thought your action methods had to be void methods for Ajax actions, otherwise this happens. ?
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=""/> and by inspecting that link after I close the ajax modal dialog and the update container refreshes the href for the link is:
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.
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
|