我是Struts 2的新手,我正在努力将Struts 1代码迁移到Struts 2,其中我有类似的方案,Action Servlet已扩展,在扩展类“process”方法中,locale已在请求中设置为如下所示,
public class TestServlet extends ActionServlet {
protected void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Locale locale = Locale.ENGLISH;
locale = Locale.FRENCH;
request.setAttribute("_locales", locale);
super.process(request, response);
}
}
如何将此更改迁移到struts 2中。在Struts 2中,此方法的等效方法是什么?
答案 0 :(得分:1)
在Struts2中,您不再需要actionservlet或requestprocessor,一切都是通过i18n
拦截器完成的。
希望你能在this回答中找到帮助。
Struts2国际化拦截器i18n可以用来 动态地将当前用户区域设置更改为用户特定的区域设置 对于用户的会话。
“或者,仅适用于当前请求(自XWork 2.1.3起)”
通过发出HTTP请求并提供请求参数 request_locale,其中包含创建的“en_US”等语言环境的值 美国英语的语言环境。
此区域设置默认保存在会话中 “WW_TRANS_I18N_LOCALE”属性并用作当前区域设置 用户会话。当前的语言环境也被推入了 每个请求都由此拦截器映射ActionContext。这允许 支持本地化的框架组件都利用了 ActionContext的语言环境。
此外,如果您想了解如何获取当前的区域设置,您应该阅读我对Get user locale detected by i18n interceptor in action class的回答。