【问题标题】:Not able to find messages with ResourceBundleMessageSource无法使用 ResourceBundleMessageSource 找到消息
【发布时间】:2017-10-23 23:58:25
【问题描述】:

我目前正在使用以下正常工作的代码:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>/WEB-INF/resources/lang/lang</value>
            </list>
        </property>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

当我将 ReloadableResourceBundleMessageSource 更改为 ResourceBundleMessageSource 时,它​​停止工作。

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/resources/lang/lang" />
</bean>

我不断收到异常提示“在区域设置 'en_US' 的代码 'title' 下找不到消息。” (标题是一个例子)

在阅读了类似的问题后,我也尝试将 basename 参数的值更改为以下任何一种,但均未成功: WEB-INF/资源/lang/lang .WEB-INF.resources.lang.lang
WEB-INF.resources.lang.lang
资源.lang.lang
lang.lang
语言
类路径:resources.lang.lang

创建一个名为 lang_en_US.properties 的文件也没有帮助。

【问题讨论】:

  • 你也试过WEB-INF/resources/lang/lang吗?
  • 是的,那个也是。

标签: java spring resourcebundle


【解决方案1】:

显然,它正在查找 java 文件夹(类路径的根目录)而不是 web 文件夹。

我在 java 文件夹中创建了一个名为 lang 的新包,并将 lang*.properties 文件移至其中。

然后我将 lang.lang 作为 basename 的值,它开始工作。

更新:项目清理后,这停止工作。 lang 文件应该进入“资源”文件夹,而不是 java 文件夹。从技术上讲,它们在构建后最终会出现在同一个位置,但 IDE 似乎忽略了 java 文件夹中的非类文件并直接跳过它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2023-02-03
    相关资源
    最近更新 更多