cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Getting 'Server error' on preview in wcmscockpit.

0 Likes
573

When I try to hit preview on wcms page I am getting server error with a log in console as :: INFO | jvm 1 | main | 2018/03/23 06:02:40.584 | SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [] threw exception [Error while processing internal filterchain. Exception occurred at chain position: 4 of 15. Current filter: 'com.mauijim.storefront.filters.cms.CMSSiteFilter@74e43dd2'!; nested exception is java.lang.IllegalArgumentException: No matching DataLocale for en_us ( tried [en_us] on available locales {es_ES=es_ES->es_ES, es_CO=es_CO->es_CO, in=in->id, mx=mx->mx, pt=pt->pt, es_MX=es_MX->es_MX, fr=fr->fr, ru=ru->ru, ja=ja->ja, zh_TW=zh_TW->zh_TW, it=it->it, ko=ko->ko, de_DE=de_DE->de_DE, de=de->de, es=es->es, zh=zh->zh, en=en->en, hi=hi->hi, it_IT=it_IT->it_IT, fr_FR=fr_FR->fr_FR, en_US=en_US->en_US, en_GB=en_GB->en_GB} )] with root cause INFO | jvm 1 | main | 2018/03/23 06:02:40.585 | java.lang.IllegalArgumentException: No matching DataLocale for en_us ( tried [en_us] on available locales {es_ES=es_ES->es_ES, es_CO=es_CO->es_CO, in=in->id, mx=mx->mx, pt=pt->pt, es_MX=es_MX->es_MX, fr=fr->fr, ru=ru->ru, ja=ja->ja, zh_TW=zh_TW->zh_TW, it=it->it, ko=ko->ko, de_DE=de_DE->de_DE, de=de->de, es=es->es, zh=zh->zh, en=en->en, hi=hi->hi, it_IT=it_IT->it_IT, fr_FR=fr_FR->fr_FR, en_US=en_US->en_US, en_GB=en_GB->en_GB} ) INFO | jvm 1 | main | 2018/03/23 06:02:40.585 | at de.hybris.platform.servicelayer.internal.i18n.impl.DefaultLocalizationService.matchDataLocale(DefaultLocalizationService.java:239) INFO | jvm 1 | main | 2018/03/23 06:02:40.585 | at de.hybris.platform.servicelayer.internal.i18n.impl.DefaultLocalizationService.setCurrentLocale(DefaultLocalizationService.java:119) INFO | jvm 1 | main | 2018/03/23 06:02:40.585 | at de.hybris.platform.servicelayer.i18n.impl.DefaultI18NService.setCurrentLocale(DefaultI18NService.java:122) INFO | jvm 1 | main | 2018/03/23 06:02:40.585 | at de.hybris.platform.acceleratorcms.context.impl.DefaultContextInformationLoader.loadFakeLanguage(DefaultContextInformationLoader.java:161)

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Likes

Hello ,

This looks like a problem with locales. DefaultContextInformationLoader doesn’t work with isocodes containing uppercases, like “en_US” because languageModel.getIsocodes() returns only lowercase locale like “en_us”.

To fix that you can use parseLocaleCodes method from de.hybris.platform.util.Utilities in overrided loadFakeLanguages method from DefaultContextInformationLoader class like this:

 @Override
 protected void loadFakeLanguage(final LanguageModel languageModel) {
     if (languageModel != null) {
         // this is returning the wrong locale with small language and small country
         // for instance en_us instead of en_US
         // getI18NService().setCurrentLocale(new Locale(languageModel.getIsocode()));
         final String[] loc = Utilities.parseLocaleCodes(languageModel.getIsocode());
         getI18NService().setCurrentLocale(new Locale(loc[0], loc[1], loc[2]));
     }
 }

Regards,
Paweł Wrzask