您可以实现LocaleResolver接口以将用户Locale绑定到数据库。下面是示例实现 “
ApplicationLocaleResolver.java”
import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.security.core.context.SecurityContext;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.web.servlet.i18n.SessionLocaleResolver;import net.app.locale.service.UserService;@Configurationpublic class ApplicationLocaleResolver extends SessionLocaleResolver { @Autowired UserService userService; @Override public Locale resolveLocale(HttpServletRequest request) { SecurityContext securityContext = SecurityContextHolder.getContext(); String userName = securityContext.getAuthentication().getName(); String localeOption = userService.getUsersPreferedLocaleOption(userName); Locale userLocale = Locale.forLanguageTag(localeOption); return userLocale; } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { super.setLocale(request, response, locale); SecurityContext securityContext = SecurityContextHolder.getContext(); String userName = securityContext.getAuthentication().getName(); userService.saveUsersPreferedLocaleOption(userName, locale); }}我假设您的userService具有将用户保存到db本地的方法。我希望
userService.saveUsersPreferedLocaleOption(userName,locale);您可以更改它。
然后,您可以如下替换localeResolver bean定义。
@Bean(name = "localeResolver")public LocaleResolver localeResolver() { return new ApplicationLocaleResolver();}


