1. 程式人生 > >springMVC國際化I18n坑坑坑——default

springMVC國際化I18n坑坑坑——default

開發十年,就只剩下這套架構體系了! >>>   

在看springMVC原始碼的時候,不知道是我哪裡配置錯了,還是這就是springmvc的坑?

按照  DispatcherServlet 原始碼 說明,
注入 LocaleResolver的 實現類 SessionLocaleResolver 或 LocaleContextResolver 的bean。

即可根據瀏覽器語言環境的自動切花locale環境,

SessionLocaleResolver類的部分原始碼如下 

/**
 * Determine the default locale for the given request, //確定給定請求的預設區域設定
 * Called if no Locale session attribute has been found.
 * <p>The default implementation returns the specified default locale,
 * if any, else falls back to the request's accept-header locale.
 * @param request the request to resolve the locale for
 * @return the default locale (never {@code null})
 * @see #setDefaultLocale
 * @see javax.servlet.http.HttpServletRequest#getLocale()
 */
//protected 包外不允許掉用此方法,
protected Locale determineDefaultLocale(HttpServletRequest request) { Locale defaultLocale = getDefaultLocale(); if (defaultLocale == null) { defaultLocale = request.getLocale(); } return defaultLocale; }

而SessionLocaleResolver 的父類  AbstractLocaleResolver.class 擁有這個方法  setDefaultLocale

原始碼是這樣的:

/**
 * 如果沒有找到其他語言環境,則設定此解析器將返回的預設語言環境。
 * Set a default Locale that this resolver will return if no other locale found.
 */
public void setDefaultLocale(@Nullable Locale defaultLocale) {
 this.defaultLocale = defaultLocale;
}

我設定了這個引數之後,

@Bean
public LocaleResolver localeResolver() {
  SessionLocaleResolver localeResolver = new SessionLocaleResolver();
  //設定預設區域
  localeResolver.setDefaultLocale(Locale.CHINA);
  return localeResolver;
}

發現;
無論我怎麼修改瀏覽器的語言環境,都給我 返回的是 這個defaultLocale

說好的default呢,是我哪裡配錯了嗎?求幫助