【问题标题】:Spring data rest Bean Validation InternationalizationSpring data rest Bean Validation 国际化
【发布时间】:2015-10-17 17:51:31
【问题描述】:

我是 Spring 的新手,特别是 Spring Boot,我正在尝试使用国际化,到目前为止,我可以正常使用普通控制器,但我无法使用 spring-data-rest 使其与 Bean Validation 一起使用。

我正在使用以下代码来启动应用程序:

@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 验证尊重其他语言环境,它总是使用默认语言环境。

有什么帮助吗?

我在 1.2.5.RELEASE 版本中使用 spring-data-rest 和 spring-boot。

【问题讨论】:

  • 这是用于国际化实体字段或错误消息吗?我也在尝试将 spring-data-rest 实体字段国际化。

标签: java spring spring-boot spring-data-jpa spring-data-rest


【解决方案1】:

我找到了解决方案,因为没有人帮助我发帖,因为可以帮助其他人。

如果我没有在 SessionLocaleResolver 上设置默认位置,它会从 Accept-Header 获取语言环境,所以我会工作。

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

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多