Вот моя конфигурация локальКак получить текущий язык в контроллере?
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<ref bean="localeChangeInterceptor" />
</property>
</bean>
Когда я пытаюсь вызвать локаль в контроллере с помощью
@RequestMapping(value = "customers/customer-{idCustomer:[0-9]+}/detail", method = RequestMethod.GET)
public ModelAndView detail(Map<String, Object> map, @PathVariable Integer idCustomer, Locale locale) {
logger.info(locale.toString());
logger.info(request.getLocale().toString());
...
}
Он возвращает различные значения. Но когда я переключаю язык на сайте с использованием параметра GET в URL ?lang=en
, он ничего не меняет в вызовах указанного контроллера. i18n отлично работает, он загружает ярлыки из правильного файла. Но я хочу получить измененный язык в моих контроллерах. Я хочу получить выбранный язык самостоятельно на открытой странице (с/без запроса param lang
в URL).
'lang = en' - всего лишь параметр запроса. Используйте '@ RequestParam'. –
Да, но переменная 'lang' не будет доступна на странице без этого параметра запроса. – misco