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

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

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

请注意:将默认语言环境设置为fa_IR )可以正常工作。

不,你必须创建自己的拦截器,扩展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; }