如何使用spring使用带参数的消息

时间:2013-11-07 04:49:29

标签: java spring

我想将应用程序消息外部化到属性文件。我正在使用Spring加载属性文件。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 <property name="locations">
  <list>      
     <value>classpath:applicationmessage.properties</value>      
  </list>
 </property>
 <property name="ignoreResourceNotFound" value="true" />

我的信息是

message.myMessage = Couldn't find resource for customer id {0} and business unit {1}

使用java文件中的参数读取此消息的最佳方法是什么?有没有其他方法来外化消息。

2 个答案:

答案 0 :(得分:1)

嗨,有几种方法可以从spring获取属性消息。

方式1:

<util:properties id="Properties" location="classpath:config/taobaoConfig.properties" />

在spring.xml中添加

你的java文件中的

。你创建了以下属性。

 @Resource(name = "Properties")
private Properties serverProperties;

属性文件中的键值将在serverProperties属性中。

方式2:

创建属性容器bean

<bean id="propertyUtil" class="com.PropertiesUtil">
    <property name="locations">
        <list>
            <value>/WEB-INF/classes/datasource.properties</value>
            <value>/WEB-INF/classes/fileDef.properties</value>
        </list>
    </property>
</bean>

com.PropertiesUtil的代码

    public class PropertiesUtil extends PropertyPlaceholderConfigurer {
private Properties properties;

@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) {
    super.processProperties(beanFactory, props);
    this.properties = props;
}

/**
 * Get property from properties file.
 * @param name property name
 * @return property value
 */
public String getProperty(final String name) {
    return properties.getProperty(name);
}
}

您可以使用此容器bean在属性文件中获取键值。

答案 1 :(得分:1)

它依赖于,存在不同的方式,直接在jsp中,在表单验证过程中等。

例如

属性中的消息:

msg=My message {0} and {1}.

在你的jsp中:

<spring:message code="msg" 
                arguments="${value1},${value2}" 
                htmlEscape="false"/>

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/spring.tld.html#spring.tld.message