Index: lams_build/conf/standalone.xml =================================================================== diff -u -r0fdf00ad8ffebc0cc6d79de96a216c08ce0d4cdf -rf2dcf163cc2c619cd1a4a56d7242d8226be771aa --- lams_build/conf/standalone.xml (.../standalone.xml) (revision 0fdf00ad8ffebc0cc6d79de96a216c08ce0d4cdf) +++ lams_build/conf/standalone.xml (.../standalone.xml) (revision f2dcf163cc2c619cd1a4a56d7242d8226be771aa) @@ -447,7 +447,7 @@ - + Index: lams_central/src/java/org/lamsfoundation/lams/web/SessionListener.java =================================================================== diff -u -r5806f7835e004132c37781df113fa0c879287065 -rf2dcf163cc2c619cd1a4a56d7242d8226be771aa --- lams_central/src/java/org/lamsfoundation/lams/web/SessionListener.java (.../SessionListener.java) (revision 5806f7835e004132c37781df113fa0c879287065) +++ lams_central/src/java/org/lamsfoundation/lams/web/SessionListener.java (.../SessionListener.java) (revision f2dcf163cc2c619cd1a4a56d7242d8226be771aa) @@ -32,6 +32,7 @@ import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.web.filter.LocaleFilter; /** @@ -57,11 +58,11 @@ //set server default locale for STURTS and JSTL. This value should be overwrite //LocaleFilter class. But this part code can cope with login.jsp Locale. if (session != null) { - Locale preferredLocale = new Locale(Configuration.get(ConfigurationKeys.SERVER_LANGUAGE)); - if (preferredLocale != null) { - session.setAttribute(LocaleFilter.PREFERRED_LOCALE_KEY, preferredLocale); - Config.set(session, Config.FMT_LOCALE, preferredLocale); - } + String defaults[] = LanguageUtil.getDefaultLangCountry(); + Locale preferredLocale = new Locale(defaults[0] == null ? "" : defaults[0], defaults[1] == null ? "" + : defaults[1]); + session.setAttribute(LocaleFilter.PREFERRED_LOCALE_KEY, preferredLocale); + Config.set(session, Config.FMT_LOCALE, preferredLocale); } } Index: lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java =================================================================== diff -u -r57cfef36c82a058441720eaae5c02a1eff6decbf -rf2dcf163cc2c619cd1a4a56d7242d8226be771aa --- lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision 57cfef36c82a058441720eaae5c02a1eff6decbf) +++ lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision f2dcf163cc2c619cd1a4a56d7242d8226be771aa) @@ -44,106 +44,71 @@ /** * 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. + * prority 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 . + * 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$ + * @author Steve.Ni, Marcin Cieslak */ public class LocaleFilter extends OncePerRequestFilter { - // private static Logger log = Logger.getLogger(LocaleFilter.class); - private String encoding; - public static final String PREFERRED_LOCALE_KEY = "org.apache.struts.action.LOCALE"; /** Key used in request to get the required direction. Used by the HTML tag */ public static final String DIRECTION = "page_direction"; - /** - * Set the encoding to use for requests. This encoding will be passed into a ServletRequest.setCharacterEncoding - * call. - */ - public void setEncoding(String encoding) { - this.encoding = encoding; - } - @Override public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { - // charset encoding - if (!StringUtils.isEmpty(encoding)) { - request.setCharacterEncoding(encoding); - } else { - request.setCharacterEncoding("UTF-8"); - } - Locale preferredLocale = null; String direction = null; TimeZone tz = null; - // Comment: This getParameter() cause problem when reading WDDX packet, which need request.getInputStream() - // method. - // user set has first prority: - // String locale = request.getParameter("locale"); - // if (locale != null) - // preferredLocale = new Locale(locale); - // if request does not assign locale, then get it from database - if (preferredLocale == null) { - HttpSession sharedsession = SessionManager.getSession(); - if (sharedsession != null) { - 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 : ""); - } + // get locale from user settings + HttpSession session = SessionManager.getSession(); + if (session != null) { + UserDTO user = (UserDTO) session.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); } } } + + // get default locale from configuration if (preferredLocale == null) { - // if request does not have, set it default then. String defaults[] = LanguageUtil.getDefaultLangCountry(); - preferredLocale = new Locale(defaults[0] != null ? defaults[0] : "", defaults[1] != null ? defaults[1] : ""); - + preferredLocale = new Locale(defaults[0] == null ? "" : defaults[0], defaults[1] == null ? "" : defaults[1]); } - if (direction == null) { direction = LanguageUtil.getDefaultDirection(); } if (tz == null) { LanguageUtil.getDefaultTimeZone(); } - HttpSession session = request.getSession(false); // set locale for STURTS and JSTL // set the time zone - must be set for dates to display the time zone if (session != null) { - if (preferredLocale != null) { - session.setAttribute(LocaleFilter.PREFERRED_LOCALE_KEY, preferredLocale); - Config.set(session, Config.FMT_LOCALE, preferredLocale); - session.setAttribute(LocaleFilter.DIRECTION, direction); - } + session.setAttribute(LocaleFilter.PREFERRED_LOCALE_KEY, preferredLocale); + session.setAttribute(LocaleFilter.DIRECTION, direction); + Config.set(session, Config.FMT_LOCALE, preferredLocale); Config.set(session, Config.FMT_TIME_ZONE, tz); } - if (preferredLocale != null && !(request instanceof LocaleRequestWrapper)) { + if (!(request instanceof LocaleRequestWrapper)) { request = new LocaleRequestWrapper(request, preferredLocale); LocaleContextHolder.setLocale(preferredLocale); } - if (chain != null) { - chain.doFilter(request, response); - } + chain.doFilter(request, response); // Reset thread-bound LocaleContext. LocaleContextHolder.setLocaleContext(null); } - -} +} \ No newline at end of file