我正在使用带有 Spring MVC 的 OSGI,详细信息如下
Bundle b1-将消息源声明为 bean。消息资源在 bundleb1 中的服务中完全自动装配成功。xml 中消息源的条目是
<bean id="messageSource" class="org.synyx.messagesource.InitializableMessageSource">
<property name="basename" value="ApplicationResources"/>
<property name="messageProvider">
<bean class="org.synyx.messagesource.jdbc.JdbcMessageProvider">
<property name="dataSource" ref="dataSource"/>
</bean>
</property>
</bean>
消息源在 bundle b1 的 osgi-context.xml 中作为服务公开,如下所示
<osgi:service interface="org.springframework.context.MessageSource" ref="messageSource"/>
要导入 WAB 包中的消息资源,请在 WAB 的 osgi-context.xml 中创建以下条目 已创建以下条目以导入 bundle b1 公开的 messageSource 服务。
注意 - 我没有在 WAB 中创建 messageSource bean(未在 *-servlet.xml 中定义 messageSource),因为我希望从 Bundle B1 导入 messageSource 并由 spring 用于语言解析。
问题是 - 当我点击放置在 WAB 中的示例 Jsp 时,我收到错误
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'user.nametext' for locale 'en_US'.
分析-进一步调试spring代码我发现webapplication上下文中使用的messagesource是DelegatingMessageSource类型。但是从 bundle b1 导入的 messageSource 暴露了 InitializableMessageSource 类型的对象。这意味着 webapplication 上下文没有使用通过 WAB 的 osgi-context.xml 导入的 messageSource 初始化。
请帮忙...