applicationContext.xml
<bean id="messageSource" ="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>aaa</value> <value>bbb</value> </list> </property> </bean>
※從官網複製
※用list、array、set都可以,這樣的設定表示還要有aaa.properties、bbb.properties,如下三隻
aaa.properties
aaa.bbb=111
bbb_en_US.properties
ccc.ddd=english {0},{1}
bbb_zh_TW.properties
ccc.ddd=\u7E41\u4E2D {0},{1}
測試類
MessageSource ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); String m1 = ctx.getMessage("aaa.bbb", null, "Default", null); String m2 = ctx.getMessage("ccc.ddd", new Object[] { "p1", "p2" }, "default Message", Locale.TAIWAN); System.out.println(m1); System.out.println(m2); ((ClassPathXmlApplicationContext) ctx).close();
※結果:
111
繁中 p1,p2
※getMessage是overloading,第三個參數是找不到第一個參數的key時顯示的訊息,如果給null,就是null;因為是overloading,所以只給三個參數(第三個參數不設定),又找不到key的話,就會出「org.springframework.context.NoSuchMessageException」的錯
※我把最後的Locale的參數給null,還是能找到,是zh_TW的,不曉得是不是覆蓋的原因
沒有留言:
張貼留言