当前位置: 首页 > 知识库问答 >
问题:

Spring MessageSource似乎忽略了fallbackToSystemLocale属性

太叔繁
2023-03-14

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

此行为与Spring版本4.1.4和4.1.5相同。

MessageSource配置:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="fallbackToSystemLocale" value="false"></property>
    <property name="basenames">
        <list>
            <value>locale/messages</value>
        </list>
    </property>
    <property name="defaultEncoding" value="UTF-8"></property>
</bean>

正在获取消息:

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

谢谢你的建议!

共有1个答案

况浩邈
2023-03-14

当您使用locale=null调用消息源时,不打算引导消息源做什么

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

另一方面,当您使用locale=nullMessageSource.getMessage("key", null);)调用getMessage时,语言环境将由Locale.getDefault设置

组织。springframework。上下文支持AbstractMessageSource:

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

在考虑halbackToSystemLocale属性之前。

因此,最容易的黑客攻击(不是Workaround,而是黑客攻击)将使用您不支持的语言,而不是使用空的消息源。getMessage(“key”,新语言环境(“XX”)

 类似资料:
  • 问题内容: 我的环境是作为应用程序服务器的Maven项目和Wildfly(8.2.1)。我需要使用SOAP将传入的REST调用与第三方服务器连接。我需要SSL客户端身份验证;因此,我有自己的KeyStore和TrustStore。因此,我创建了自己的SSLContext,需要让WebService使用此SSLContext。 Wildfly出现问题,并且使用了JAXWS的实现(Apache CXF

  • 我已经为这个问题挣扎了几天了,希望有人能帮上忙。 当我的应用程序尝试构建Hibernate3 SessionFactory时,我遇到以下错误: 下面是我的/WEB-INF/jboss网站。xml: Hibernate在我的单元测试中运行良好,只有当我将其部署到测试服务器时才会发生这种情况。 从我发现的情况来看,这似乎是因为jboss已经有了dom4j的副本。 不,我无法从我的项目中删除dom4j,

  • 问题内容: 我想在VPS上运行一个用Java编写的非常简单的机器人。我想将jvm内存限制为10MB(我怀疑是否需要更多内存)。 我正在使用以下命令运行机器人: java -Xms5M -Xmx10M -server -jar IrcBot.jar“ / home / jbot” 但是表明为Java保留的实际内存是(或者我在这里解释错了吗?)。 13614 jbot 17 0 144米 16米674

  • 我试图自定义Grails应用程序的日志配置,但appender(及其布局模式)似乎被忽略了。 在配置中。非常棒: Log4J实际上考虑了logger部分(例如,如果我对hibernate的debug和trace行进行注释,那么hibernate语句的记录将按预期停止)。 但我一直在尝试appenders部分的不同版本,似乎都没有考虑,实际上应用于控制台的格式只包括消息本身(例如,如果我编写 在代码

  • 我试图从管理各种Tomcat实例的应用程序生命周期的第三方工具的正常应用程序日志中筛选出启动(/关闭)事件。基础是(2.12.1),中使用,用于简单的追加器(下面的示例进行了大量简化,包括硬编码值): 相应的记录器如下所示: 当我启动实例时,将创建两个日志文件。但是,只有应用程序日志文件(application appender)包含条目,其中包括我感兴趣的要过滤掉的条目: 有什么想法,如何调试,

  • JNA还加载正确的库。 这里有人知道为什么不起作用吗?是因为我使用的是带有清单的jar应用程序文件吗? 有人有类似的问题吗?