由于struts 2的默认I18nInterceptor在系统分发时失败,我已经实现了一个基于cookie的解决方案。我添加了一个拦截器来查找request_locale参数并设置cookie。它还寻找cookie。如果request_locale参数出现或存在cookie,我设置新的Locale。这个拦截器是在struts的I18N拦截器之后调用的。但是在设定之后,我看不到语言的变化。下面是拦截器的拦截方法。
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
String localeStr = request.getParameter("request_locale");
if (localeStr != null) {
setLocaleInCookie(localeStr);
}
if (localeStr == null) {
localeStr = getLocaleFromCookie();
}
if (localeStr != null) {
ActionContext.getContext().setLocale(new Locale(localeStr));
}
return invocation.invoke();
}
我想知道我做的是对的。有没有其他解决方案或解决方法呢?