使用 spring:message 标签时指定包名称

问题描述 投票:0回答:1

在将应用程序从 Struts 1.2.x 迁移到 Spring MVC 时,我陷入了 JSP 中必须使用

.properties
查找文件中的标签的位置。

在旧代码中,应用程序使用了 Struts 的 MessageTag 和使用 Struts 中的 TagUtils.message() 的自定义标签来指定需要从中获取给定键的值的包名称。

现在迁移到 Spring,我已经在 SpringContext.xml 中定义了所有查找文件包,如下所示:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>/WEB-INF/lookups/abc</value>
            <value>/WEB-INF/lookups/xyz</value>
            ...
        </list>
    </property>
</bean>

spring:message
标签与键一起使用为
code
可以完美地工作,直到我达到 2 个查找包使用相同键但具有不同值的地步。理想情况下,我只需将键重命名为唯一,但考虑到需要进行的代码更改,这是不可行的。

我想知道是否有一种方法可以以某种方式指定包名称,以便在键不明确的情况下,Spring 知道从哪个包中获取值。

我想过将

MessageSource
ReloadableResourceBundleMessageSource
扩展到自定义类并实现一个提供我正在寻找的功能的方法,但我基本上陷入了死胡同,没有任何文档或此类实现的示例。

spring spring-mvc jsp-tags
1个回答
0
投票

您是说

abc
xyz
有一些重叠的键?如果是这样,其中一个被另一个覆盖了

请注意,由于顺序查找,先前资源包中的消息定义将覆盖后面资源包中的消息定义。

您将不得不使用不同的方法,创建多个消息源 bean 并将不同的 bean 加载到不同的 Spring 上下文中。

© www.soinside.com 2019 - 2024. All rights reserved.