spring整合freemarker進行國際化的過程很簡單,將spring-webmvc裡的org/springframework/web/servlet/view/freemarker下的spring.ftl include到各個要國際化的ftl檔案裡就行了,比如將這個spring.ftl複製在ftl檔案目錄的common下,可以這樣直接在ftl裡include進來
<#import
"/common/spring.ftl" as spring
/>
當然也可以在spring配置檔案裡對freemarkerconfig配置的時候自動匯入
<bean
id="freemarkerconfig"
class
="org.springframework.web.servlet.view.freemarker.freemarkerconfigurer"
>
...
<
property
name
="freemarkersettings"
>
<
props
>
<
prop
key="defaultencoding"
>utf-8
prop
>
...
<
prop
key="auto_import"
>common/spring.ftl as spring
prop
>
props
>
property
>
然後在spring的配置檔案裡宣告下
class="org.springframework.context.support.resourcebundlemessagesource">messageresources
在源檔案目錄resource下有相應的messageresources.zh_cn.properties和messageresources.en_us.propertes等屬性檔案
在ftl檔案裡這樣使用
<@spring.message
"hello"
/>
這樣系統會根據使用者當前環境下的locale進行國際化。但是如果要自己手動指定某個使用者的locale要怎麼辦呢?
參考了下org.springframework.web.servlet.i18n.localechangeinterceptor對locale的設定,首先要在spring的配置檔案裡宣告乙個localeresolver (比如 cookielocaleresolver,不然的話後面的操作會出現異常),我這裡對locale的設定只要在session範圍裡就行了
<bean
id="localeresolver"
class
="org.springframework.web.servlet.i18n.sessionlocaleresolver"
>
<
property
name
="defaultlocale"
value
="zh"
/>
bean
>
接著在spring的controller裡控制locale的方法裡加入以下**就可以了
localeresolver localeresolver =requestcontextutils.getlocaleresolver(request);if (localeresolver == null
)
localeeditor localeeditor = new
localeeditor();
localeeditor.setastext(lang);
localeresolver.setlocale(request, response, (locale) localeeditor.getvalue());
最後總結下我的方式
1.spring的配置裡必須要有的
<bean
id="freemarkerconfig"
class
="org.springframework.web.servlet.view.freemarker.freemarkerconfigurer"
>
<
property
name
="templateloaderpath"
value
="/web-inf/ftl/"
/>
<
property
name
="freemarkersettings"
>
<
props
>
<
prop
key="defaultencoding"
>utf-8
prop
>
<
prop
key="template_update_delay"
>5
prop
>
<
prop
key="auto_import"
>common/website.ftl as website
prop
>
props
>
property
>
bean
>
<
bean
id="viewresolver"
class
="org.springframework.web.servlet.view.freemarker.freemarkerviewresolver"
>
<
property
name
="cache"
value
="true"
/>
<
property
name
="prefix"
value
=""/>
<
property
name
="suffix"
value
=".ftl"
/>
<
property
name
="contenttype"
value
="text/html;charset=utf-8"
>
property
>
bean
>
<
bean
id="localeresolver"
class
="org.springframework.web.servlet.i18n.sessionlocaleresolver"
>
<
property
name
="defaultlocale"
value
="zh"
/>
bean
>
<
bean
id="messagesource"
class
="org.springframework.context.support.resourcebundlemessagesource"
>
<
property
name
="basenames"
>
<
list
>
<
value
>messageresources
value
>
list
>
property
>
bean
>
2.在設定使用者locale的controller裡設定locale
localeresolver localeresolver =requestcontextutils.getlocaleresolver(request);if (localeresolver == null
)
localeeditor localeeditor = new
localeeditor();
localeeditor.setastext(lang);
localeresolver.setlocale(request, response, (locale) localeeditor.getvalue());
3.在ftl裡這樣使用
<@website.message
"hello"
/>
spring 整合Junit,整合web
l 匯入jar包 基本 4 1 測試 spring test.jar 1.讓junit通知spring載入配置檔案 2.讓spring容器自動進行注入 l 修改測試類 package com.hcx import org.junit.test import org.junit.runner.runw...
Spring 整合測試
spring 中的包 spring mock.jar 為整合測試提供了一流的支援。所有相關的api在包 org.springframework.test 中,它們不依賴於任何應用伺服器或者其他部署環境。test包裡的各種抽象類提供了如下的功能 test包對載入的context提供快取,快取功能是通過...
spring整合JDBC spring aop事務
spring中提供了乙個可以運算元據庫的物件,物件封裝了jdbc技術。jdbctemplate jdbc模板物件。與dbutils中的queryrunner非常相似。jdbcdaosupport 根據連線池建立jdbc模板。spring封裝了事務管理 開啟事務,提交事務,回滾事務 因為在不同平台,操...