2016-03-27 1 views
2

В Struts 2 версии 2.3.28 перехватчик i18n принимает только локали, зарегистрированные в jvm, список которых возвращается Locale.getAvailableLocales().Struts 2 (версия 2.3.28) принимает только зарегистрированные места

Ну, хотя я могу расширить список доступных Java Locales, как упомянуто How to extend the list of available Java Locales, это какой-то короткий путь, который устанавливает этот перехватчик для принятия всех строк в качестве языкового стандарта (например, fa_IR)?!

Только примечание: Установка стандарта по умолчанию на fa_IR (<constant name="struts.locale" value="fa_IR" />) работает нормально.

ответ

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; 
    } 
+0

Благодарим Вас, 'если (локали == NULL)' Постулаты должны быть удалены также, или он будет всегда установлен по умолчанию :) –