1 package org.appfuse.webapp.filter; 2 3 import org.appfuse.Constants; 4 import org.springframework.context.i18n.LocaleContextHolder; 5 import org.springframework.web.filter.OncePerRequestFilter; 6 7 import javax.servlet.FilterChain ; 8 import javax.servlet.ServletException ; 9 import javax.servlet.http.HttpServletRequest ; 10 import javax.servlet.http.HttpServletResponse ; 11 import javax.servlet.http.HttpSession ; 12 import javax.servlet.jsp.jstl.core.Config; 13 import java.io.IOException ; 14 import java.util.Locale ; 15 import java.util.Map ; 16 17 20 public class LocaleFilter extends OncePerRequestFilter { 21 22 public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, 23 FilterChain chain) 24 throws IOException , ServletException { 25 26 String locale = request.getParameter("locale"); 27 Locale preferredLocale = null; 28 29 if (locale != null) { 30 preferredLocale = new Locale (locale); 31 } 32 33 HttpSession session = request.getSession(false); 34 35 if (session != null) { 36 if (preferredLocale == null) { 37 preferredLocale = (Locale ) session.getAttribute(Constants.PREFERRED_LOCALE_KEY); 38 } else { 39 session.setAttribute(Constants.PREFERRED_LOCALE_KEY, preferredLocale); 40 Config.set(session, Config.FMT_LOCALE, preferredLocale); 41 } 42 43 if (preferredLocale != null && !(request instanceof LocaleRequestWrapper)) { 44 request = new LocaleRequestWrapper(request, preferredLocale); 45 LocaleContextHolder.setLocale(preferredLocale); 46 } 47 } 48 49 String theme = request.getParameter("theme"); 50 if (theme != null && request.isUserInRole(Constants.ADMIN_ROLE)) { 51 Map config = (Map ) getServletContext().getAttribute(Constants.CONFIG); 52 config.put(Constants.CSS_THEME, theme); 53 } 54 55 chain.doFilter(request, response); 56 57 LocaleContextHolder.setLocaleContext(null); 59 } 60 } 61 | Popular Tags |