Spring Data Rest Bean Validation Интернационализация

Я новичок в Spring, особенно в Spring Boot, я пытаюсь использовать интернационализацию, пока что я нормально использую обычные контроллеры, но я не могу заставить его работать с Bean Validation, используя spring-data-rest.

Я использую следующий код для запуска приложения:

@EnableJpaRepositories
@SpringBootApplication
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {

    @Bean(name = "validator")
    public LocalValidatorFactoryBean validator() {
        return new LocalValidatorFactoryBean();
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

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

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

Я могу нормально использовать локаль с контроллерами, но не могу заставить Bean Validation уважать другие локали, она всегда использует локаль по умолчанию.

Любая помощь?

Я использую spring-data-rest и spring-boot в версии 1.2.5.RELEASE.

1 ответ

Я нашел решение, так как никто не помог мне, потому что я могу помочь кому-то еще.

Если я не устанавливаю местоположение по умолчанию для SessionLocaleResolver, он получает локаль из Accept-Header, поэтому я буду работать.

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver slr = new SessionLocaleResolver();
    // Remove this line
    // slr.setDefaultLocale(Locale.US); 
    return slr;
}
Другие вопросы по тегам