It seems a bit hacky, but you might try ThreadContext.setSession(session) in MyApplication#newSession right after you construct MySession.
2012/3/14 Andre Schütz <[email protected]> > Hi, > Thank you for the hint. Do you have an idea where should place my code? I > tried it in the constructor of my index webpage, but the setLocale method > created a page reload that did not occur in the Webapplication constructor. > > Thanks, > Andre > > --- > Andre Schütz > www.faustas.de > > Dan Retzlaff <[email protected]> schrieb: > > >Andre, check out this javadoc comment on Session#getClientInfo: > > > > * Note: Do <strong>not</strong> call this method from your custom {@link > >Session} constructor > > * because the temporary page needs a constructed {@link Session} to be > >able to work. > > > >Dan > > > >2012/3/13 "André Schütz" <[email protected]> > > > >> Hi, > >> > >> I have the following code in my MyApplication class: > >> > >> {CODE} > >> > >> public void init() { > >> super.init(); > >> getRequestCycleSettings().setGatherExtendedBrowserInfo(true); > >> getResourceSettings().setThrowExceptionOnMissingResource(false); > >> > >> ... > >> } > >> > >> public Session newSession(Request request, Response response) { > >> MySession session = new MySession(request); > >> > >> // determine default language from the browser > >> String defaultLanguage = null; > >> if (request != null && request.getClientUrl() != null && > >> !request.getClientUrl().toString().isEmpty()) { > >> defaultLanguage = > >> session.getClientInfo().getProperties().getNavigatorLanguage(); > >> } > >> Locale locale = session.getLocale(); > >> > >> // no locale available > >> if (locale == null) { > >> if (defaultLanguage != null) { > >> if (defaultLanguage.startsWith("en")) { > >> locale = new Locale("en", "EN"); > >> } > >> else if (defaultLanguage.startsWith("de")) { > >> locale = new Locale("de", "DE"); > >> } > >> } > >> else { > >> locale = new Locale("en", "EN"); > >> } > >> > >> session.setLocale(locale); > >> } > >> > >> return session; > >> } > >> > >> {CODE} > >> > >> I get an error, when I delete the Cookies in my browser and reload the > >> actual page. The same error occurs when I delete the line ( if (request > != > >> null && request.getClientUrl() != null && > >> request.getClientUrl().toString().isEmpty()) { ) from the code example > at > >> building time from the TestHomePage.java. > >> > >> The error is: > >> > >> {ERROR} > >> > >> java.lang.StackOverflowError > >> > >> > > org.apache.wicket.session.HttpSessionStore.getHttpSession(HttpSessionStore.java:95) > >> > >> > > org.apache.wicket.session.HttpSessionStore.getSessionId(HttpSessionStore.java:155) > >> > >> > org.apache.wicket.session.HttpSessionStore.lookup(HttpSessionStore.java:192) > >> > >> > org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1526) > >> org.apache.wicket.Session.get(Session.java:156) > >> > >> org.apache.wicket.Application$1.onInstantiation(Application.java:279) > >> > >> > > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:36) > >> > >> > > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:34) > >> > >> > > org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80) > >> > >> > > org.apache.wicket.application.ComponentInstantiationListenerCollection.onInstantiation(ComponentInstantiationListenerCollection.java:32) > >> org.apache.wicket.Component.<init>(Component.java:678) > >> > org.apache.wicket.MarkupContainer.<init>(MarkupContainer.java:118) > >> org.apache.wicket.Page.<init>(Page.java:206) > >> org.apache.wicket.Page.<init>(Page.java:170) > >> org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:74) > >> > >> > > org.apache.wicket.markup.html.pages.BrowserInfoPage.<init>(BrowserInfoPage.java:66) > >> > >> > > org.apache.wicket.protocol.http.WebSession.newBrowserInfoPage(WebSession.java:239) > >> > >> > org.apache.wicket.protocol.http.WebSession.getClientInfo(WebSession.java:216) > >> > >> {ERROR} > >> > >> Any ideas why that happens? > >> > >> Thank you, > >> Andre > >> -- > >> Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir > >> belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> >
