Solving Spring Message Resource Bundle UTF-8 Problem
26-01-2015To solve Spring resource bundle UTF-8 problem, you should add specific message source bundle bean as follows:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:messages" /> <property name="fallbackToSystemLocale" value="true" /> <property name="fileEncodings" value="UTF-8" /> <property name="defaultEncoding" value="UTF-8" /> <property name="cacheSeconds" value="3600"/> </bean>
Also, you should save .properties file(s) as UTF-8 encoding.
classpath:messages points to properties files in maven resources folder which start with messages prefix
Note: In contrast to
ResourceBundleMessageSource
, ReloadableResourceBundleMessageSource class supports reloading of properties files through the cacheSeconds settings. Note: Since application servers typically cache all files loaded from the classpath, it is necessary to store resources somewhere else (for example, in the "WEB-INF" directory of a web app). Otherwise changes of files in the classpath will not be reflected in the application.
If you are using ResourceBundleMessageSource, you have to omit classpath: prefix as follows:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages" /> <property name="defaultEncoding" value="UTF-8" /> <property name="cacheSeconds" value="3600"/> </bean>