【问题标题】:what is the equivalent of Requestprocessor.processLocale method in Struts2?Struts2 中 Requestprocessor.processLocale 方法的等价物是什么?
【发布时间】:2016-06-11 18:35:19
【问题描述】:

我是 Struts 2 的新手,我正在将 Struts 1 代码迁移到 Struts 2,我有这样的场景,Action Servlet 被扩展,并且在扩展类“进程”方法中,区域设置在请求中设置为如下图,

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 中对此等效的方法是什么?

【问题讨论】:

    标签: java struts2 internationalization migration locale


    【解决方案1】:

    在 Struts2 中,您不再需要 actionservlet 或请求处理器,一切都通过 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 的回答。

    【讨论】:

    • 我是否需要在 struts.xml 文件中为每个操作配置 i18n 拦截器,或者是否为所有操作自动启用?以及它将如何仅将语言环境“en”和“fr”设置为会话?
    • 您还有其他问题吗?您可以将其作为新问题发布,cmets 部分用于澄清当前问题或答案。文您有足够的声誉,您可以在任何问题或答案上发布 cmets。如果它帮助你解决了你的问题或者你通过阅读它学到了,不要忘记接受答案。
    • 因为这里很少有人投票,如果您觉得这个答案有帮助,请不要犹豫,点赞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2019-08-23
    • 2020-12-02
    • 2017-03-19
    • 2013-10-15
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多