views:

189

answers:

3

Is it possible to derive the preferred language from a httpsession object (javax.servlet.http.HttpSession) ? It is possible to get it from the servletrequest but I dont have that. Thanks for any ideas. Sven

A: 

As its Javadoc shows, there is no method which does exactly that.

Either just obtain it from the request (preferred), or store it as an attribute of the session yourself.

BalusC
+3  A: 

The preferred Locale for a user is available as a request header ("Accept-Language"). It is automatically filled in by the user's browser according to its preferences. Then, you can store this info in the user's session and retrieve it later when appropriate.

Olivier Croisier
You could do that, but what happens if the user changes the browser's preferred language after the session has been established? So you would need to refresh this on every request.
Stephen C
so, you need to check each request. you could achieve this using filter.
Thomman
I agree with the filter idea. The filter could populate the user's session with the locale information.
Olivier Croisier
A: 

usually we cannot from a HttpSession get the relevant httpRequest object. However there is a workaround.

You can create a Filter, in the filter, you have everything, httpSession, httpRequest etc. Then create a ThreadLocal variable to store the HttpRequest object. Or just store some request attributes that you need in your later methods.

Your method should be able to get the value of the ThreadLocal. HttpRequest, or language settings or whatever you stored before.

Don't know if this answered your question.

Kent