Springboot locale с запросом отдыха и тимелиф - PullRequest
0 голосов
/ 08 апреля 2019

Итак, другое приложение направляет пользователя на мой сервер. Перенаправление - это Пост-запрос (application/json) со значением language в JSON. Как мне установить значение локали в RestController? Чтобы Thymeleaf мог отображать правильный текст.

Установка локали с помощью LocaleContextHolder не помогает.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Закончено следующим решением:

WebMvcConfigurer имеет эти

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver r = new SessionLocaleResolver();
        r.setDefaultLocale(new Locale("jp"));
        return r;
    }

И в контроллере я вызываю этот класс public метод:


@Component
public class WebLanguage {
    public void setLocale(HttpServletRequest request, HttpServletResponse response) {
        if (!request.getParameterMap().containsKey("lang")) return;

        LocaleResolver localeResolver = localeResolver(request);
        localeResolver.setLocale(request, response, new Locale(request.getParameterMap().get("lang")[0]));
    }

    LocaleResolver localeResolver(HttpServletRequest request) {
        return RequestContextUtils.getLocaleResolver(request);
    }

}
0 голосов
/ 11 апреля 2019

Вы должны следовать этому руководству здесь , поскольку интернационализация является распространенной задачей при весенней загрузке.Если вам нужен короткий ответ:

Сначала настройте LocaleResolver в вашем Application.java :

@Bean(name = "localeResolver")
public LocaleResolver localeResolver() {
  SessionLocaleResolver slr = new SessionLocaleResolver();
  slr.setDefaultLocale(new Locale("tr", "TR"));
  return slr;
}

Затем снова в вашем приложении.java файл настраивает LocaleChangeInterceptor:

@Bean(name = "localeChangeInterceptor")
public LocaleChangeInterceptor localeChangeInterceptor() {
  LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
  lci.setParamName("lang");
  return lci;
}

И, наконец, зарегистрируйте свой LocaleChangeInterceptor (также в Application.java):

@Override
public void addInterceptors(InterceptorRegistry registry) {
  registry.addInterceptor(localeChangeInterceptor());
}

Теперь, если выотправьте параметр запроса с именем "lang" с вашей пружиной запроса POST будет использовать его значение для определения желаемого языкового стандарта и соответственно его изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...