1
這裏是我的地區配置如何獲取控制器中的當前語言?
<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());
...
}
它返回的值不同。但是當我使用URL ?lang=en
中的GET參數在網站上切換語言時,它在所提及的控制器調用中不會改變任何內容。 i18n工作正常,它從正確的文件加載標籤。但我想在我的控制器中獲得改變的語言。我想在打開的頁面上單獨獲取選擇的語言(URL中有/無請求參數lang
)。
'lang = en'只是一個請求參數。使用'@ RequestParam'。 –
是的,但如果沒有這個請求參數,變量'lang'將不可用。 – misco