FreeMarker 和SpringMVC 国际化设置

FreeMarker 和SpringMVC 国际化设置

今天有网友问我FreeMarker 和SpringMVC 国际化应该如何设置,他总是设置失败

其实设置FreeMarker 和SpringMVC 国际化只需要简单六步即可完成

第一步,在applicationCentext.xml里的FreeMarker配置里面的templateLoaderPath,做如下修改(freemarker的一些配置我就不详细说了哈)

<property name="templateLoaderPath" value="/WEB-INF/theme/freemarker/" />


这里表示我们的freemarker的模版文件所在目录

第二步在applicationCentext.xml里的,配置资源文件所在位置


<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource">
	<property name="basename">
		<value>language/message</value>
	</property>
</bean>
第三步,在xxx-servlet.xml中配置本地化解析器,我这里是Cookie的本地化解析器



<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
	<property name="cookieMaxAge" value="604800" />
	<property name="defaultLocale" value="zh_CN" />
	<property name="cookieName" value="Language"></property>
</bean>
通过以上三步,我们就知道了,我们的模版文件在/WEB-INF/theme/freemarker/这里


我们的资源文件在这里language下的message开头的资源文件,如我这里是message_zh_CN.properties

第四步,将spring-webmvc包里的spring.ftl拷贝出来,具体位置在这里:org/springframework/web/servlet/view/freemarker

拷贝到你模版所在目录下的任意位置,我这里是放在了includes目录下

第五步,在FreeMarker配置里面,freemarkerSettings里增加prop节点,部分代码如下:

<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<property name="templateLoaderPath" value="/WEB-INF/theme/freemarker/" />
	<property name="freemarkerSettings">
		<props>
			**********
			<prop key="auto_import">includes/spring.ftl as spring</prop>
		</props>
	</property>
</bean>
既增加了auto_import 他的值里面的includes/spring.ftl路劲是相对于上面设置的templateLoaderPath值,是相对路径


在这里是自动导入,也可以在ftl页面手动导入,在ftl页面顶部加上代码 <#import "/includes/spring.ftl" as spring />

注意,路劲都是相对于上面设置的templateLoaderPath值,是相对路径

第六步,测试<@spring.message "common_project"/>或者<@spring.message code="common_project"/>都是可以


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img