日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2 国际化

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2 国际化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

Struts2 國際化是建立在 Java 國際化基礎上的:

  - 為不同國家/語言提供對應的消息資源文件

  - Struts2 框架會根據請求中包含的 Locale 加載對應的資源文件

  - 通過程序代碼取得該資源文件中指定 key 對應的消息

配置國際化資源文件

  I.?? Action 范圍資源文件: 在Action類文件所在的路徑建立名為 ActionName_language_country.properties 的文件

  II.? 包范圍資源文件: 在包的根路徑下建立文件名為 package_language_country.properties 的屬性文件,一旦建立,處于該包下的所有 Action 都可以訪問該資源文件。注意:包范圍資源文件的 baseName 就是package,不是Action所在的包名。

  III. 全局資源文件

    > 命名方式: basename_language_country.properties
?? ?  ? > struts.xml <constant name="struts.custom.i18n.resources" value="baseName"/>

  IV.? 國際化資源文件加載的順序如何呢 ? 離當前 Action 較近的將被優先加載.

如何在頁面上 和 Action 類中訪問國際化資源文件的? value 值

  I. 在 Action 類中. 若 Action 實現了 TextProvider 接口, 則可以調用其 getText() 方法獲取 value 值

    > 通過繼承 ActionSupport 的方式。 ?

  II. 頁面上可以使用 s:text 標簽; 對于表單標簽可以使用表單標簽的 key 屬性值

<s:textfield name="username" key="username"></s:textfield>

    > 若有占位符, 則可以使用 s:text 標簽的 s:param 子標簽來填充占位符
?? ?  ? > 可以利用標簽和 OGNL 表達式直接訪問值棧中的屬性值(對象棧 和 Map 棧)

time=Time:{0}<s:text name="time"><s:param value="date"></s:param></s:text>------------------------------------time2=Time:${date}<s:text name="time2"></s:text>

實現通過超鏈接切換語言.

  I.? 關鍵之處在于知道 Struts2 框架是如何確定 Local 對象的 !

  II. 可以通過閱讀 I18N 攔截器知道.

  III. 具體確定 Locale 對象的過程:

    > Struts2 使用 i18n 攔截器 處理國際化,并且將其注冊在默認的攔截器棧中

    > i18n攔截器在執行Action方法前,自動查找請求中一個名為 request_locale 的參數。如果該參數存在,攔截器就將其作為參數,轉換成Locale對象,并將其設為用戶默認的Locale(代表國家/語言環境)。并把其設置為 session 的 WW_TRANS_I18N_LOCALE 屬性

    > 若 request 沒有名為request_locale 的參數,則 i18n 攔截器會從 Session 中獲取 WW_TRANS_I18N_LOCALE 的屬性值,若該值不為空,則將該屬性值設置為瀏覽者的默認Locale

    > 若 session 中的 WW_TRANS_I18N_LOCALE 的屬性值為空,則從 ActionContext 中獲取 Locale 對象。

  IV.? 具體實現: 只需要在超連接的后面附著? request_locale 的請求參數, 值是 語言國家 代碼.

<a href="testI18n.action?request_locale=en_US">English</a><a href="testI18n.action?request_locale=zh_CN">中文</a>

?    > 注意: 超鏈接必須是一個 Struts2 的請求, 即使 i18n 攔截器工作!

?

轉載于:https://www.cnblogs.com/linyueshan/p/5750832.html

總結

以上是生活随笔為你收集整理的struts2 国际化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。