spring的学习历程之利用MessageSource实现国际化占位符直接输出原因(一)


      利用MessageSource实现国际化其中有一个着眼于传递参数给查找的消息,这些参数将被转换为字符串并插入到已查找到的消息中的占位符(译注:资源文件中花括号里的数字即为占位符)。#其中'{0}'会直接输出{0} 这是因为这个单号的原因使得占位符直接输出。

    下面是一个MessageSource的例子:

bean的配置:

<beans>
  <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
      <list>
        <value>format</value>
        <value>exceptions</value>
        <value>windows</value>
      </list>
    </property>
  </bean>
</beans>
这段配置假定在你的classpath中有三个资源文件(resource bundle),它们是 formatexceptionswindows。通过ResourceBundle,使用JDK中解析消息的标准方式,来处理任何解析消息的请求。

# in 'format.properties'
message=Alligators rock!

# in 'exceptions.properties' <span style="color:#ff0000;">这里的{0}要写上单引号时要注意了,如果是英文中的单引号,那么就是直接输出占位符来的</span>
argument.required=The<span style="color:#ff6666;"> '{0}'</span> argument is required. 

下面是测试代码。因为ApplicationContext实现也都实现了MessageSource接口,所以能被转型为MessageSource接口

public static void main(String[] args) {
    MessageSource resources = new ClassPathXmlApplicationContext("beans.xml");
    String message = resources.getMessage("message", null, "Default", null);
    System.out.println(message);
String eMessage = mr.getMessage("argument.required",new Object[]{"exception"},"Required",null);
		System.out.println(eMessage);
}


上述程输出的结果:

Alligators rock!
The ‘exception’ argument is required   //如果是英文中的会输出:<span style="font-family: Arial, Helvetica, sans-serif;">The {0} argument is required</span>


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值