Index: lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r889a3994f9a2b92372cadd974984ef914867f235 --- lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision 889a3994f9a2b92372cadd974984ef914867f235) @@ -36,8 +36,6 @@ import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.Configuration; -import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -46,6 +44,10 @@ /** * Filter request to preferred locale according to user option in database, client browser locale or default locale. * The proity is user setting in database is highest, then browser locale, then the default locale. + *

+ * NOTICE: This filter must set after org.lamsfoundation.lams.web.session.SystemSessionFilter + * in web.xml because it need get value from SystemSession . + * * @author Steve.Ni * * @version $Revision$ @@ -86,15 +88,17 @@ if(preferredLocale == null){ HttpSession sharedsession = SessionManager.getSession(); UserDTO user = (UserDTO) sharedsession.getAttribute(AttributeNames.USER); - if(user != null){ - direction = user.getDirection(); - tz = user.getTimeZone(); - String lang = user.getLocaleLanguage(); - String country = user.getLocaleCountry(); - // would prefer both the language and country but that's not always feasible. - // so we may end up with some confusing situations. - if(!StringUtils.isEmpty(lang)){ - preferredLocale = new Locale(lang,country!=null?country:""); + if(sharedsession != null){ + if(user != null){ + direction = user.getDirection(); + tz = user.getTimeZone(); + String lang = user.getLocaleLanguage(); + String country = user.getLocaleCountry(); + // would prefer both the language and country but that's not always feasible. + // so we may end up with some confusing situations. + if(!StringUtils.isEmpty(lang)){ + preferredLocale = new Locale(lang,country!=null?country:""); + } } } }