ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-springboot 2中的语言环境

2019-11-08 14:03:19  阅读:297  来源: 互联网

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


我试图在Spring Boot 2应用程序中使用I18N

首先,我在资源/语言环境/消息中使用以下命令创建一个名为“ messages_pt_BR.properties”的文件:

Size.Ato.sercicos=Deve conter pelo menos 1 item
Size.atoRtdpj.servicos=Deve conter pelo menos 1 item
Size.servicos=msg1
Size=msg2
validacao_documento_obrigatorio=Documento: Pelo menos 1 precisa estar preenchido

然后我创建

@Configuration
public class LocaleConfiguration {

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        Locale.setDefault(new Locale("pt","BR")); // without this line when I try to get the locale the system return en_BR
        localeResolver.setDefaultLocale(new Locale("pt","BR"));
        return localeResolver;
    }

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:locale/messages");
        messageSource.setCacheSeconds(3600); //refresh cache once per hour
        return messageSource;
    }
}

然后我创建

@Component
public class Messages {

    @Autowired
    private MessageSource messageSource;

    public String getMessage(String id) {
        Locale locale = LocaleContextHolder.getLocale();
        return messageSource.getMessage(id,null,locale);
    }

}

所以在我的控制器中,我使用:

@Autowired
Messages messages;

//in my method:

messages.getMessage("validacao_documento_obrigatorio")

当我尝试测试此错误时,返回此错误:

org.springframework.context.NoSuchMessageException: No message found under code 'validacao_documento_obrigatorio' for locale 'pt_BR'.

而且jpa约束不会更改.

解决方法:

如果要从classpath:locale / messages加载,请将messages_pt_BR.properties移到语言环境下,因为这会在locale文件夹下搜索messages_pt_BR属性,因此如果要在/ locale / messages下,则需要传递完整的文件名路径,如下所示它将在/ locale / messages文件夹下加载messages_pt_BR文件:

 @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:locale/messages/messages");
        messageSource.setCacheSeconds(3600); //refresh cache once per hour
        return messageSource;
    }

标签:spring-boot,spring-data-jpa,java
来源: https://codeday.me/bug/20191108/2008478.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有