今天主要學習的struts2的國際化,國際化其實讓我來說就是爲了方便不同的人羣所寫的一個共同的程序,裏面可以包括不同的語言,不同的提示信息,今天把國際化的知識講完了,感覺還可以,上課的時候做了兩個實例,感覺也並不是那磨難,只需要加上配置文件,有三種方法,雖然遇到一些bug,但都解決了,在不同的需求可能需要不同的方法,接下來來看看專業術語的解釋:
一個系統的國際化就是根據操作系統的語言,頁面上的表現形式發生相應的變化。比如如果操作系統是英文,頁面的文字應該用英語,如果操作系統是中文,頁面的語言應該是中文。
修改顯示的語言在瀏覽器---->工具---->語言修改即可
首先
(1)、建立資源文件
資源文件的命名規則:
默認的命名爲:
文件名前綴.properties
根據語言的命名爲:
文件名前綴.語言種類.properties
例如:
中文:
resource_zh_CN.properties
內容:
item.username=用戶名
item.password=密碼
英文:
resource_en_US.properties
內容:
item.username=username_en
item.password=password_en
默認:
resource.properties
內容:
item.username=username
item.password=password
csdn --->告訴struts2你的基礎名稱是什麼?
配置常量>struts.xml文件中配置如下:
csdn的基礎名的配置文件位於src下:
注:個人理解:就是根據value的值來定義配置文件的名字
位於src下面:
文件內如如下:
啓動tomcat 加載資源文件:
如果配置文件位於包中:
單獨把配置文件放在一個包裏,需要在struts.xml文件中修改其value值改成該包下的前綴名
那麼在struts.xml文件中怎麼配置:
hbsi就是基礎名稱,這個基礎可以隨便寫,但必須和配置文件一致
那麼在jsp頁面中怎麼獲取國際化的標籤值:
首先使用struts標籤需要在頭文件中聲明
<%@ taglib uri="/struts-tags" prefix="s" %>
這裏用了兩種格式,一種是默認的xhtml,另外一種是simple簡單的;
在默認的主題時,key就代表你在國際化配置文件的name的值在這裏可以獲取到
在simple主題下就需要一個單獨的標籤來進行定義,<s:text />標籤值得注意的是提交的值需要用到%{getText(‘login’)}方法;
那麼怎麼在action中設置讓他也顯示呢?
在action中的方法寫
List<String> list = new ArrayList<String>();
list.add("小灰灰");
list.add("小胖子");
System.out.println(getText("wel", list));
就可以輸出了;
分析:
出現上面這個錯誤,代表上傳文件的大小過大,雖然在寫了國際化配置信息,但是卻沒有輸出中文,
解決:
在找到核心包文件下
的struts-messages.properties配置文件,打開,可以搜索一下Request exceeded allowed size limit!就會發現其實他屬於另一個錯誤信息:
struts.messages.upload.error.SizeLimitExceededException=Request exceeded allowed size limit! Max size allowed is: {0} but request was: {1}!
只需要把他添加到國際化中,輸出中文格式就可以了
但是有個問題很糾結,它提示兩次相同的信息
· 文件超過設置的大小! 限制的大小是 5,242,880 上傳文件的大小是: 7,849,073!
· 文件超過設置的大小! 限制的大小是 5,242,880 上傳文件的大小是: 7,849,073!
這個有點不懂,還有一個問題就是爲什麼是拋出異常而沒有執行
struts.messages.error.file.too.large 這個呢;
哦哦就在剛纔那一會我明白了,我在那個struts.xml文件中設置了這個限制大小
<constant name="struts.multipart.maxSize" value="5242880"/>
一開始我寫的是和攔截器param name="maximumSize">5242880</param>這個屬性值相同,如果上傳的文件超過這個數值就會出現異常,
maximumSize<=struts.multipart.maxSize的值,否則就會出現這個異常
所以改一下
<constant name="struts.multipart.maxSize" value="10485760"/>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">p_w_picpath/jpeg,p_w_picpath/pjpeg,p_w_picpath/bmp,application/zip</param>
<param name="maximumSize">5242880</param>
</interceptor-ref>
有關文件上傳的錯誤信息:
位於:org.apache.struts2包下的struts-messages.properties
這個信息的組成查看org.apache.struts2包下的struts-messages.properties文件。在這個文件中,有三個鍵值對:
{0}:代表頁面上<input name=”upload” type=”file”/>中的name的值
{1}:代表文件上傳的名稱
{2}:文件保存在臨時目錄的名稱。
臨時目錄爲work\Catalina\localhost\struts_upload_interceptor
{3}:代表文件上傳類型,或者文件上傳大小。上面的錯誤代表文件上傳類型。如果報第一個錯誤,則代表文件上傳大小。