• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Handling Session timeout with ajax
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Handling Session timeout with ajax


  • Subject: Re: Handling Session timeout with ajax
  • From: Chuck Hill <email@hidden>
  • Date: Fri, 30 Jan 2009 15:12:22 -0800


On Jan 30, 2009, at 2:29 PM, Robert Tupelo-Schneck wrote:

On Jan 30, 2009, at 5:03 PM, Chuck Hill wrote:
On Jan 30, 2009, at 1:14 PM, Robert Tupelo-Schneck wrote:
It doesn't seem to work correctly when I click an AjaxTabbedPanelTab. In that case the tab fills with something that looks like the normal WebObjects session timeout page with a bit of javascript tacked on the end; in fact, if I peek at redirect.contentString(), I get
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Missing Session Error</title>
...
</html>
document.location.href='/cgi-bin/WebObjects/WOPrefixReg.woa/wo/1.0';


Any idea why the <script> etc. is left off in the tab case?

That is not the question. The question is why that HTML is in there. It looks like it is getting generated _before_ AjaxUtils.redirectTo(errorPage) is getting called. Is there anything going on before this in your exception handling method?

Here's my code:

public WOResponse errorPageWith(WOContext aContext, String title, String message) {
if(aContext.hasSession()) {
aContext.session().terminate();
}

And there is your problem! ERXRedirect is returning a re-direct to a component action URL which needs this session. Move this code to ErrorPage in appendToResponse and set the session timeout to a second or two instead of calling terminate() directly.


Chuck



ErrorPage errorPage = pageWithName(ErrorPage.class,aContext); errorPage.title = title; errorPage.message = message;

if (AjaxUtils.isAjaxRequest(aContext.request())) {
// Create redirect to return to break out of Ajax
AjaxUtils.redirectTo(errorPage);
WOResponse redirect = errorPage.context().response();
// Generate the error page so that it gets into the page cache, don't do this earlier!
errorPage.generateResponse();
NSLog.out.appendln(redirect.contentString());
return redirect;
}
return errorPage.generateResponse();
}


@Override
public WOResponse handleException(Exception anException, WOContext aContext)
{
super.handleException(anException, aContext);
return errorPageWith(aContext,"Error", "A server error has occurred.");
}


@Override
public WOResponse handlePageRestorationErrorInContext(WOContext context) {
super.handlePageRestorationErrorInContext(context);
return errorPageWith(context,"Navigation Error", "An error has occurred; you may have used the back button too many times.");
}


@Override
public WOResponse handleSessionCreationErrorInContext(WOContext context) {
super.handleSessionCreationErrorInContext(context);
return errorPageWith(context,"Error", "A server error has occurred.");
}


@Override
public WOResponse handleSessionRestorationErrorInContext(WOContext context) {
super.handleSessionRestorationErrorInContext(context);
return errorPageWith(context,"Session Closed", "Your session has been closed or timed out due to inactivity.");
}



Also, are you storing the session ID in cookies? If not, you need a newer version of Wonder. I fixed a bug there earlier this week.

I just got Wonder-latest, thanks!

Robert



-- 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
References: 
 >Re: Handling Session timeout with ajax (From: Robert Tupelo-Schneck <email@hidden>)
 >Re: Handling Session timeout with ajax (From: Chuck Hill <email@hidden>)
 >Re: Handling Session timeout with ajax (From: Robert Tupelo-Schneck <email@hidden>)

  • Prev by Date: Re: Handling Session timeout with ajax
  • Next by Date: More Eclipse Upgrading Pains: java.lang.ClassNotFoundException
  • Previous by thread: Re: Handling Session timeout with ajax
  • Next by thread: W3C validation - ERXBatchNavigationBar
  • Index(es):
    • Date
    • Thread