2016-10-03 3 views
4

У меня есть приложение для многоязычных расположений, и я недавно обновил стойки с 2.3.20 до 2.3.29. После обновления язык тамилов не работает, даже если, если мы выберем тамильский язык, тексты будут показаны на английском языке.Тамильский язык не работает в распорках 2.3.29

Я проверил настройку языкового стандарта, когда мы выбираем язык тамилов, это правильно, то есть request_locale = ta_IN.

Я попытался расширить I18nInterceptor в своем классе перехватчика, а затем переопределить метод getLocaleFromParam(), как показано ниже. Это тоже не сработало.

Поэтому, пожалуйста, дайте мне знать, если у кого-либо из вас есть решение этой проблемы.

тамильский язык работал отлично в Struts 2.3.20

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) { 
       logger.debug("applied request locale="+locale); 
      } 
     } 
     return locale; 
} 
+0

код кажется правильным, как вы добавили этот перехватчик в strust? Удалили ли вы перехватчик 'i18n' по умолчанию struts? –

+1

Обратитесь к http://stackoverflow.com/questions/36245849/struts-2-version-2-3-28-only-accepts-registered-locales –

+0

@AlirezaFattahi Я назвал этот вопрос для переопределения метода getLocaleFromParam(). Как мы можем использовать языковой стандарт, который не зарегистрирован в JVM. Я не удалял стек по умолчанию. Новый код перехватчика выглядит следующим образом. <имя перехватчик = "langSelInterceptor" \t класс = "com..LangInter"> <перехватчики> <-перехватчик стек имя = "newStack"> <перехватчик-исх имя = "langSelInterceptor" /> <перехватчик-исх имя = "defaultStack" /> имя <действие = "loginTamilLocale" класс = "com.Action"> <-перехватчик исх имя = «newStack» /> –

ответ

1

Вы должны изменить заменить перехватчик.

стека по умолчанию определяется в распорок, как показано ниже (https://struts.apache.org/docs/struts-defaultxml.html):

<interceptor-stack name="defaultStack"> 
    <interceptor-ref name="exception"/> 
    <interceptor-ref name="alias"/> 
    <interceptor-ref name="servletConfig"/> 
    <interceptor-ref name="i18n"/> 
    <interceptor-ref name="prepare"/> 
    <interceptor-ref name="chain"/> 
    <interceptor-ref name="scopedModelDriven"/> 
    <interceptor-ref name="modelDriven"/> 
    <interceptor-ref name="fileUpload"/> 
    <interceptor-ref name="checkbox"/> 
    <interceptor-ref name="datetime"/> 
    <interceptor-ref name="multiselect"/> 
    <interceptor-ref name="staticParams"/> 
    <interceptor-ref name="actionMappingParams"/> 
    <interceptor-ref name="params"/> 
    <interceptor-ref name="conversionError"/> 
    <interceptor-ref name="validation"> 
     <param name="excludeMethods">input,back,cancel,browse</param> 
    </interceptor-ref> 
    <interceptor-ref name="workflow"> 
      <param name="excludeMethods">input,back,cancel,browse</param> 
    </interceptor-ref> 
    <interceptor-ref name="debugging"/> 

Вы должны определить свой собственный перехватчик и добавить его по умолчанию стеку

<interceptor name="customi18n" 
     class="foo.bar.CustomI18NInterceptor" /> 

И добавить это к вашему собственному стоку:

//Give a new name to your stack 
<interceptor-stack name="customDefaultStack"> 
     <interceptor-ref name="exception"/> 
     <interceptor-ref name="alias"/> 
     <interceptor-ref name="servletConfig"/> 
     //Replace your customi18n interceptor 
     <interceptor-ref name="customi18n"/> 
    //Same as above 
    ..... 

Сделать это стек ваш по умолчанию

<default-interceptor-ref name="customDefaultStack"/> 
+0

Я пробовал так, как вы сказали выше. Все еще не сработало. Когда я пытаюсь распечатать информацию локали со сессии, она правильно печатает языковой язык тамилов, т. Е. Как «ta_IN». Тем не менее он отображает страницу на английском языке. logger.info («Язык:» + сеанс.GetAttribute ("WW_TRANS_I18N_LOCALE")); –

+0

Что произойдет, если вы установите стандартные настройки locale ins struts \t '' –

+0

Он отлично работает, если я делаю ta_IN по умолчанию в struts.xml. –

Смежные вопросы