Struts 2(版本2.3.28)仅接受已注册的区域设置

时间:2016-03-27 09:31:39

标签: java struts2 internationalization interceptor

在Struts 2版本2.3.28中,i18n拦截器只接受注册到jvm的语言环境,即Locale.getAvailableLocales()返回的列表。

好吧,虽然我可以扩展可用的Java语言环境列表,如上所述[{3}},但是设置此拦截器以接受所有字符串作为语言环境(例如fa_IR)是否有任何简短的方法?

只需注意:将默认语言环境设置为fa_IR<constant name="struts.locale" value="fa_IR" />)即可。

1 个答案:

答案 0 :(得分:1)

不,您必须创建自己的扩展i18n的拦截器并覆盖此方法

 protected Locale getLocaleFromParam(Object requestedLocale) {
        Locale locale = null;
        if (requestedLocale != null) {
            locale = (requestedLocale instanceof Locale) ?
                    (Locale) requestedLocale :
                    LocalizedTextUtil.localeFromString(requestedLocale.toString(), null);
            if (locale != null && LOG.isDebugEnabled()) {
                LOG.debug("applied request locale=#0", locale);
            }
        }

        if (locale == null) {
            locale = Locale.getDefault();
        }
        return locale;
    }