How to add resource-bundle to Spring-JSF application -
i have spring-jsf integration app. when try messages resource-bundle @ faces-config.xml, runs without problem. want move resource bundle spring applicationcontext.xml problem is, couldnt find resource bundle. here faces-config;
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"> <application> <el-resolver>org.springframework.web.jsf.el.springbeanfaceselresolver</el-resolver> <resource-bundle> <base-name>/resources/locale/messages</base-name> <var>msg</var> </resource-bundle> <locale-config> <default-locale>es</default-locale> <supported-locale>en</supported-locale> <supported-locale>fr</supported-locale> </locale-config> </application> </faces-config> and applicationcontext.xml
<bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver"> <property name="defaultlocale" value="es" /> </bean> <bean id="msg" class="org.springframework.context.support.reloadableresourcebundlemessagesource"> <property name="basename" value="classpath:messages" /> <property name="usecodeasdefaultmessage" value="true" /> <property name="defaultencoding" value="utf-8"/> <property name="cacheseconds" value="1" /> </bean>
it looks <base-name> element incorrect.
<resource-bundle> <base-name>messages</base-name> <var>msgs</var> </resource-bundle> <locale-config> <default-locale>en_us</default-locale> <supported-locale>nl</supported-locale> <supported-locale>es</supported-locale> </locale-config> the base name of resource bundle prefix of properties file. jsf smart enough determine locales , derive correct filename properties file off of classpath.
eg.
messages_en_us.properties
messages_es.properties
the excerpt above shows default locale set english other supported locales listed below. when visitor preferred locale requests jsf page smart enough retrieve properties values approrpriately name resource bundle.
taken balusc's tutorial on resource bundles
<application> <locale-config> <default-locale>en_us</default-locale> <supported-locale>nl</supported-locale> <supported-locale>es</supported-locale> </locale-config> <resource-bundle> <base-name>com.example.faces.i18n.text</base-name> <var>text</var> </resource-bundle> </application> the other way can done implement own resourcebundle class.
public class text extends resourcebundle { detailed instructions on how listed @ linked tutorial.
the added benefit of implementing own resource bundle can declare spring bean application scope , through di can push other code throughout application in case need access various resource bundle properties in code.
Comments
Post a Comment