小编典典

Struts 2(版本2.3.28)仅接受注册的语言环境

java

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

好吧,尽管我可以扩展可用的Java语言环境的列表,如前所述如何扩展可用的Java语言环境的列表,将拦截器设置为接受所有字符串作为语言环境(例如fa_IR)是一种简便的方法吗?

请注意:将默认语言环境设置为fa_IR<constant name="struts.locale" value="fa_IR" />)可以正常工作。


阅读 222

收藏
2020-11-01

共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;
    }
2020-11-01