Весенний набор - PullRequest
       62

Весенний набор

0 голосов
/ 06 августа 2020

У меня есть собственный public Locale resolveLocale(HttpServletRequest request) {, который проверяет язык браузера, но также проверяет, аутентифицирован ли пользователь, потому что в этом случае он снова изменит языковой стандарт на основе настроек пользователя.

Теперь Я пытаюсь добавить селектор языка на страницу, не прошедшую проверку подлинности, разрешив страницам содержать параметр lang, как описано в документации. В настоящее время у меня есть это:

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

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

Я заметил, перейдя на страницу с, например, ?lang=en добавленным, что вызывается setLocale, и вот где я застрял. Кажется, я не могу понять, как на самом деле установить язык в этом методе? В настоящее время у меня есть это, но это вызывает StackOverflowError:

  @Override
  public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
    localeResolver.setLocale(request, response, locale);
  }

Кто-нибудь может мне помочь? : D

1 Ответ

0 голосов
/ 06 августа 2020

Вот как я это сделал в своей программе, работал без проблем

@Bean
public LocaleResolver localeResolver() {
    return new SessionLocaleResolver();
}

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

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

После этого он должен работать, просто вызывая его по URL-адресу с ?lang=en

...