Logout and localization problem
Logout and localization problem
- Subject: Logout and localization problem
- From: Miguel Arroz <email@hidden>
- Date: Sat, 8 Apr 2006 16:55:58 +0100
Hi!
We have an application where the preferred user language is stored
in his account. So, he may see the application in English, but as
soon as he logs-in, the app switches to the language he choose
before. We do this by removing his language from the session language
list, and adding it again as the first one.
I'm implementing Logout now. To implement Logout, I have used code
from Practical WebObjects book:
public WOComponent logout() {
NSMutableDictionary arguments = new NSMutableDictionary();
arguments.setObjectForKey(Boolean.FALSE, "wosid");
session().terminate();
WORedirect mainPage = (WORedirect) pageWithName("WORedirect");
mainPage.setUrl(context().directActionURLForActionNamed
("logout", arguments));
return mainPage;
}
When using this, it's obvious that, whatever the language was
before, the Logout page will appear in english. So, I did a small
modification:
public WOComponent logout() {
NSMutableDictionary arguments = new NSMutableDictionary();
arguments.setObjectForKey(Boolean.FALSE, "wosid");
arguments.setObjectForKey(session().languages().objectAtIndex
(0), "language");
session().terminate();
WORedirect mainPage = (WORedirect) pageWithName("WORedirect");
mainPage.setUrl(context().directActionURLForActionNamed
("logout", arguments));
return mainPage;
}
And, in DirectAction, I tried this:
public WOActionResults logoutAction() {
String language = (String)request().formValueForKey
("language");
changeLanguage(language);
return pageWithName("LogoutComponent");
}
public void changeLanguage(String newLanguage) {
NSMutableArray languagesArray = new NSMutableArray
(this.languages());
languagesArray.removeObject(newLanguage);
languagesArray.insertObjectAtIndex(newLanguage,0);
this.setLanguages(languagesArray);
}
This almost works, but I'm having a problem... the
"LogoutComponent" itself appears in the correct language, but all the
sub-components it includes appear in English. I suspect this happens
because they have WOHyperlinks, so a new session is created somewhere
between by return pageWithName and the page actually gets sent to the
browser. Probably, the other subcomponents are getting the language
from the Session (which, at that point, i cannot control) and not
from the Direct Action.
As the session does not exist during the execution of my
logoutAction() method, I cannot change it's languages array. Is there
any way to solve this? Maybe forcing the creation of a session in the
logoutAction() method, but I could not find out how to do it.
Yours
Miguel Arroz
"GUERRA E' PAZ
LIBERDADE E' ESCRAVIDAO
IGNORANCIA E' FORCA" -- 1984
Miguel Arroz
http://www.ipragma.com
_______________________________________________
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