加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring MessageSource似乎忽略了属性fallbackToSystem

发布时间:2020-12-15 01:42:32 所属栏目:大数据 来源:网络整理
导读:我在配置Spring MessageSource以忽略我的系统区域设置时遇到问题.当我使用null locale参数调用getMessage时,我希望我的MessageSource选择默认属性文件messages.properties.相反,它选择messages_en.properties.当我将此属性文件的名称更改为messages_fr.prope

我在配置Spring MessageSource以忽略我的系统区域设置时遇到问题.当我使用null locale参数调用getMessage时,我希望我的MessageSource选择默认属性文件messages.properties.相反,它选择messages_en.properties.当我将此属性文件的名称更改为messages_fr.properties时,将选择默认属性文件.我的系统区域设置是’en’.所以似乎MessageSource忽略了我设置为false的fallbackToSystemLocale属性.

此行为与Spring版本4.1.4以及4.1.5相同.

MessageSource配置:

收到消息:

String message = messageSource.getMessage("user.email.notFound",new Object[] {email},null);

谢谢你的建议!

最佳答案
fallbackToSystemLocale不用于控制使用locale = null调用消息源时所执行的操作

fallbackToSystemLocale控制当您请求所请求的本地不存在的消息(代码)时要执行的操作 – 或者因为根本没有该语言的消息属性文件,或者仅仅因为消息文件不包含消息代码

另一方面,当您使用locale = null(messageSource.getMessage(“key”,null);)调用getMessage时,Locale.getDefault将设置区域设置

org.springframework.context.support.AbstractMessageSource:

protected String getMessageInternal(String code,Object[] args,Locale locale) {
    ...
    if (locale == null) {
        locale = Locale.getDefault();
    }
    ...

在考虑fallbackToSystemLocale属性之前.

因此,最简单的hack-arround(它不是一个骇人听闻的工作区),会使用你不支持的语言而不是null:
messageSource.getMessage(“key”,new Locale(“XX”));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读