gofor's blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

SpringBoot多模块I18N配置无效,导致No message found under code 'xxx' for locale 'zh_CN_#Hans'问题

发表于 2019-08-28 更新于 2020-01-10 分类于 技术 阅读次数: Valine:

在SpringBoot多模块项目开发中,新增了国际化配置

1
2
3
4
5
6
spring: 
# 国际化文件路径配置
messages:
basename: i18n/messages
encoding: UTF-8
fallbackToSystemLocale: false

Resource目录下存在i18n/messages,文件中配置key=value。

异常

使用时遇到org.springframework.context.NoSuchMessageException: No message found under code 'error.xxxx.message' for locale 'zh_CN_#Hans'。

排查
  • 检查配置项是否正确;
  • 检查Resource目录下文件是否存在;
  • 检查文件中key=value是否存在;
  • 检查编码文件编码是否为UTF_8;

经过排查,发现以上问题均不存在,且断点进入MessageSource相关方法中发现parentMessageSource始终为空。

解决

后来,看了下messages的配置位置,是在被依赖模块的application.yml配置文件中,想到应该是项目启动后,使用过程中并未在启动项目的Resource目录下发现i18n/messages,而配置生效的路径则为被依赖模块的Resource目录下,因此,导致在被依赖模块目录下找不到i18n/messages而报错。

将配置转移到启动项目的配置文件中,再次测试国际化正常。

  • 本文作者: gofor
  • 本文链接: https://acehjm.github.io/2019/08/28/i18n-error/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
# springboot # I18N
Redis数据类型
java11+springboot2+gradle5+idea+lombok 编译失败问题记录
gofor

gofor

Programming technology
14 日志
4 分类
14 标签
RSS
GitHub StackOverflow
Creative Commons
© 2016 – 2020 gofor
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
0%