localeResolver.setLocale 对我来说工作得很好,尝试像这样做:
applicationContext
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="messages/messages" p:fallbackToSystemLocale="false" />
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
我的页面.jsp
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<body>
<p><spring:message code="my.message"/></p>
</body>
</html>
\src\main\resources\messages\messages.properties
my.message=消息(默认语言)
\src\main\resources\messages\messages_en.properties
my.message=英语消息
\src\main\resources\messages\messages_fr.properties
my.message=法语消息
控制器
@Controller
@RequestMapping("/")
public class SampleController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String welcome(HttpServletRequest request, HttpServletResponse response) {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, StringUtils.parseLocaleString("fr"));
return "my_page";
}
}
用这段代码,如果我将"fr"更改为"en",我就会得到“英语信息”,如果不调用setLocale,则会得到“消息(默认语言)”。 将StringUtils.parseLocaleString("fr")更改为new Locale("fr")将产生相同的结果。