MessageSource getMessage方法在Spring mvc中不起作用

时间:2017-08-20 16:15:18

标签: java spring spring-mvc

我开发了一个Spring mvc应用程序,我想读取一些属性值 来自位于weblogic服务器内的属性文件。

已执行以下步骤:

在以下路径中创建了一个项目特定文件夹appConfig:Oracle/Middleware/ORACLE_HOME/user_projects/domains/wl_server/config/rmsConfig

在其中放置名为commonConfig.properties的属性文件。

还使用以下条目

编辑了setDomainEnv.cmd
if NOT "%EXT_POST_CLASSPATH%"=="" (
   set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
if NOT "%POST_CLASSPATH%"=="" (
    set POST_CLASSPATH=%POST_CLASSPATH%;%EXT_POST_CLASSPATH%
) else (
    set POST_CLASSPATH=%EXT_POST_CLASSPATH%
 )
)

请在下面找到我的Spring bean配置文件:

  <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.3.xsd
      http://www.springframework.org/schema/util   http://www.springframework.org/schema/util/spring-util-4.3.xsd">

 <bean id="commonProps" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
      <property name="basename" value="commonConfig" />
      <property name="cacheSeconds" value="120" />
 </bean>
</beans>

在我的Java Spring bean类中,我引用如下:

         @Component 
         public class LocationClient{
            @Autowired
            private MessageSource commonProps;

           public void showMessage(){
             System.out.println(commonProps.getMessage("common.line", null, null, null)); 
          }
       }

现在commonProps 非空但是&#34; common.line&#34;在控制台中打印 null

请在下面找到属性文件条目:

common.line=382

任何人都有任何合适的解决方案???

2 个答案:

答案 0 :(得分:0)

我认为您必须在classpath或 WEB-INF 文件夹中添加属性文件。

这是Java Spring文档中的注释。

  

对于典型的Web应用程序,可以放入消息文件   WEB-INF:例如a&#34; WEB-INF / messages&#34; basename会找到一个   &#34; WEB-INF / messages.properties&#34;,&#34; WEB-INF / messages_en.properties&#34;等等   安排以及&#34; WEB-INF / messages.xml&#34;,   &#34; WEB-INF / messages_en.xml&#34;等。请注意a中的消息定义   由于以前的资源包将覆盖以后的捆绑包中的资源包   顺序查找。

请参阅链接以获取更多信息:ReloadableResourceBundleMessageSource

答案 1 :(得分:0)

一种可能的解决方案是使用ResourceBundleMessageSource代替ReloadableResourceBundleMessageSource来定义您的属性,如下所示:

<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="commonConfig" />
    </bean>

还要确保commonConfig.properties位于WEB-INF文件夹中,例如,如果您的应用程序是appConfig,那么它应该位于类路径的根目录中:appConfig/WEB-INF/classes/commonConfig.properties

第二个替代如果您需要{class 1}}类外路径,请使用您的第一种方法(确保bean ID为commonConfig.properties

messageSource