99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

9.3 I18nInterceptor

2022-07-11 10:36 更新

I18nInterceptor 攔截器是針對(duì)于 web 應(yīng)用提供的一個(gè)國(guó)際化組件,以下是在 freemarker 模板 中使用的例子:

//先將I18nInterceptor配置成全局?jǐn)r截器
public void configInterceptor(Interceptors me) { me.add(new I18nInterceptor());
}
 
// 然后在freemarker中即可通過(guò)_res對(duì)象來(lái)獲取國(guó)際化數(shù)據(jù)
${_res.get("msg")}

以上代碼通過(guò)配置了 I18nInterceptor 攔截 action 請(qǐng)求,然后即可在 freemarker 模板文件中 通過(guò)名為_res 對(duì)象來(lái)獲取國(guó)際化數(shù)據(jù),I18nInterceptor 的具體工作流程如下:

  • l試圖從請(qǐng)求中通過(guò) controller.getPara(“_locale”)獲取 locale 參數(shù),如果獲取到則將其保存到cookie 之中
  • 如 果 controller.getPara(“_locale”)  沒(méi) 有 獲 取 到 參 數(shù) 值 , 則試圖通過(guò)controller.getCookie(“_locale”)得到 locale 參數(shù)
  • 如果以上兩步仍然沒(méi)有獲取到 locale 參數(shù)值,則使用 I18n. defaultLocale 的值做為 locale 值 來(lái)使用
  • 使用 前 面 三 步 中 得 到 的 locale  值 , 通過(guò) I18n.use(locale) 得到 Res  對(duì)象,并通過(guò)controller.setAttr(“_res”, res)將 Res 對(duì)象傳遞給頁(yè)面使用
  • 如果 I18nInterceptor. isSwitchView 為 true 值的話還會(huì)改變 render 的 view 值,實(shí)現(xiàn)整體模板 文件的切換,詳情可查看源碼。


以上步驟 I18nInterceptor 中的變量名”_locale”、”_res”都可以在創(chuàng)建 I18nInterceptor 對(duì)象時(shí) 進(jìn)行指定,不指定時(shí)將使用默認(rèn)值。還可以通過(guò)繼承 I18nInterceptor 并且覆蓋 getLocalPara、 getResName、getBaseName 來(lái)定制更加個(gè)性化的功能。


在有些 web 系統(tǒng)中,頁(yè)面需要國(guó)際化的文本過(guò)多,并且 css 以及 html 也因?yàn)閲?guó)際化而 大不相同,對(duì)于這種應(yīng)用場(chǎng)景先直接制做多套同名稱的國(guó)際化視圖,并將這些視圖以 locale 為 子目錄分類存放,最后使用 I18nInterceptor 攔截器根據(jù) locale 動(dòng)態(tài)切換視圖,而不必對(duì)視圖中 的文本逐個(gè)進(jìn)行國(guó)際化切換,只需將 I18nInterceptor.isSwitchView 設(shè)置為 true 即可,省時(shí)省力。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)