Java 如何使用Spring applicationContext从messageSource检索消息?
这是我的WEB-INF/applicationContext.xml:Java 如何使用Spring applicationContext从messageSource检索消息?,java,spring,Java,Spring,这是我的WEB-INF/applicationContext.xml: <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="WEB-INF/resources/messages"/> <property name="
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/resources/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="configurationService" class="com.services.ConfigurationService"/>
<bean id="companyService" class="com.services.CompanyService"/>
<bean id="messageService" class="com.services.MessageService"/>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/resources/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="configurationService" class="com.services.ConfigurationService"/>
<bean id="companyService" class="com.services.CompanyService"/>
<bean id="messageService" class="com.services.MessageService"/>
第二种方法是使用FileSystemXmlApplicationContext
在我的MessageService
中加载上下文。applicationContext.getBean(“messageSource”)
不再返回null
,但是messageSource.getMessage(messageId,null,locale)
找不到任何消息(NoSuchMessageException
)。这些消息当然存在于my.properties中
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/resources/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="configurationService" class="com.services.ConfigurationService"/>
<bean id="companyService" class="com.services.CompanyService"/>
<bean id="messageService" class="com.services.MessageService"/>
这两个问题看起来都像是上下文问题,但我不知道在.jsp和java类中使用相同的.properties文件。另外,我希望在初始化期间在应用程序中加载消息一次,而不必每次在类中需要它们时都加载它们。谢谢你的帮助 我通过将.properties移动到类路径中的一个目录中,终于找到了答案。对于那些有兴趣的人:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/resources/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="configurationService" class="com.services.ConfigurationService"/>
<bean id="companyService" class="com.services.CompanyService"/>
<bean id="messageService" class="com.services.MessageService"/>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="resources/language/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="messageService" class="com.services.MessageService" factory-method="getInstance"/>
注意:此代码不适用于
ReloadableResourceBundleMessageSource
。
它试图找到资源的方式似乎与
ResourceBundleMessageSource
不同 是否必须在
中提及id=“messageSource”
?或者,如果不给予它,它会工作得很好吗?
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/resources/messages"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="configurationService" class="com.services.ConfigurationService"/>
<bean id="companyService" class="com.services.CompanyService"/>
<bean id="messageService" class="com.services.MessageService"/>