在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值。