localefilter.java
来自「Java的框架」· Java 代码 · 共 72 行
JAVA
72 行
package mcaps.core.preference.webapp.filter;
import java.io.IOException;
import java.util.Locale;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mcap.core.preference.model.Preference;
import mcap.core.preference.model.PreferenceSet;
import mcap.core.preference.service.PreferenceManager;
import mcap.core.preference.util.NameConstants;
import org.springframework.context.ApplicationContext;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.filter.OncePerRequestFilter;
/**
* Filter to wrap request with a request including user preferred locale
* preference.
* @author bstan
* @date 21-Jun-2006
* @version 1.0.1.0
*/
public class LocaleFilter extends OncePerRequestFilter {
public void doFilterInternal (HttpServletRequest request,
HttpServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpSession session = request.getSession (false);
if (session != null && request.getRemoteUser() != null) {
Locale preferredLocale = (Locale) session.getAttribute (NameConstants.PREFERRED_LOCALE);
if (preferredLocale == null) {
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext (session.getServletContext ());
PreferenceManager mgr = (PreferenceManager) ctx.getBean ("preferenceManager");
PreferenceSet prefSet = mgr.getPreferenceSet(request.getRemoteUser());
Preference pref = prefSet.get("locale");
if (pref != null) {
preferredLocale = new Locale (pref.getValue());
}
else {
preferredLocale = new Locale ("en");
}
session.setAttribute (NameConstants.PREFERRED_LOCALE, preferredLocale);
}
if (!(request instanceof LocaleRequestWrapper)) {
request = new LocaleRequestWrapper (request, preferredLocale);
LocaleContextHolder.setLocale (preferredLocale);
}
}
chain.doFilter (request, response);
// Reset thread-bound LocaleContext.
LocaleContextHolder.setLocaleContext (null);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?