java中struts2國際化實現方法

在struts2中,國際化的方式其實有兩種,第一種方式的大致思路是,根據所傳入的語言和國家名稱,創建一個Locale實例,然後將這個實例設置到作用域中,從而就可以根據不同的需要來加載不同的資源文件,這個方式需要寫java代碼。而struts2中還有一種更加簡單的方式,本文就只簡要紹介一下第二種方式的實現。
首先頁面上的效果默認是這樣的
這裏寫圖片描述
當我們點擊“中文”或“英文”時,頁面的“用戶名”和“密碼”項可以切換成不同的語言顯示。下面是英文狀態顯示
這裏寫圖片描述
具體是怎樣實現的,下面就簡單說明一下。
在struts.xml配置文件中的內容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources" value="MessageResource" />
    <package name="default" namespace="/" extends="struts-default">

        <action name="index">
            <result>
                /index.jsp
            </result>
        </action>
    </package>


</struts>

這裏需要注意的是
常量struts.custom.i18n.resources屬性的value值MessageResource是相關資源文件名稱的前綴,其中資源文件在這裏是這樣命名的

這裏寫圖片描述
後面兩個是java所支持的語言和國家,資源文件的內容如下:
英文內容:

index.username=username
index.password=password

中文內容:

index.username=\u7528\u6237\u540D
index.password=\u5BC6\u7801

這個是中文文字轉碼後的結果,是爲了避免亂碼產生
這種方式我們甚至連action的java代碼都不用寫,這裏要做的只是在配置文件中設置一下跳轉頁面就可以了,最後我們在jsp頁面中直接調用配置好的action

<a href="/struts2i18n/index?request_locale=zh_CN">中文</a>|<a href="/struts2i18n/index?request_locale=en_US">英文</a>
    <s:form action="/index" method="post">
        <s:textfield name="username" key="index.username"></s:textfield>
        <s:textfield name="password" key="index.password"></s:textfield>
        <s:submit value="提交"/>
    </s:form>

這裏要注意的是,在調用action時,我們要將 java支持的語言和國家當作參數值傳入,這裏的變量全稱爲request_locale不可改變,textfield元素中的key屬性值對應資源文件相關的key值 ,其實在jsp頁面接收資源文件中的值除了以上方法外,還有另外一種,就是通過<s:text name="">元素接收,其中name屬性值對應資源文件相關key值。

發佈了45 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章