國際化資源文件
全局資源文件:
WEB-INF/classes路徑下
baseName.properties,baseName可自定義
包範圍資源文件:包的根路徑下package.properties,baseName必須是package
Action範圍資源文件:Action類文件所在目錄下ActionName.properties,baseName爲相應ActionName
對於不一樣語言和地區的資源文件,命名方式爲
baseName_<language>.properties或
baseName_<language>_<local>.properties,如baseName_en.properties,baseName_en_US.properties,baseName_zh.properties,baseName_zh_CN.properties等
全局國際化資源
在struts.properties文件中配置常量
struts.custom.i18n.resources=<baseName>
臨時指定資源文件
在JSP中<s:i18n name=""></s:i18n>之間的子標籤使用臨時指定的資源文件,其中name屬性的值爲臨時指定的資源文件的baseName
輸出國際化消息
在JSP頁面中輸出國際化消息,可使用Struts2的標籤<s:text name="" />,其中name屬性對應資源文件中的key
在表單元素的Label裏輸出國際化消息,能夠爲該表單標籤的key屬性賦值,對應資源文件中的key
在Action類中訪問國際化消息,可使用ActionSupport類的getText方法,該方法接受一個name參數,對應資源文件中的key
輸出帶佔位符的國際化消息
在JSP頁面中輸出帶佔位符的國際化消息,能夠經過在<s:text />標籤中使用多個<s:param />標籤來依次填充消息中的佔位符
在Action類中訪問帶佔位符的國際化消息,能夠調用getText(String key, List<?> args)或getText(String key, String[] args)方法填充消息中的佔位符,其中參數args是一個字符串組成的List或字符串數組,其中元素依次填充到國際化消息的佔位符中
此外,經過在國際化消息中使用OGNL做爲佔位符,能夠直接訪問值棧,將對應的值填充到國際化消息中
資源文件的加載順序 在Action類中訪問資源文件的順序: 1.優先加載相同路徑下baseName爲ActionName的資源文件; 2.若是找不到指定的key,則查找超類路徑下baseName爲超類ActionName的資源文件; 3.若是找不到指定的key,則查找所實現接口路徑下baseName爲接口類名的資源文件; 4.若是找不到指定的key,且Action使用模型驅動模式,則對getModel()方法返回的model對象從第一步開始執行; 5.若是找不到指定的key,則加載當前包下的包範圍資源文件; 6.若是找不到指定的key,則沿當前包上溯查找包範圍資源文件,直到最頂層包; 7.若是找不到指定的key,則查找全局資源文件 在JSP中訪問資源文件的順序: 1.對於臨時指定資源文件的標籤,優先查找臨時指定的資源文件; 2.在全局資源文件中查找指定的key; 3.若是找不到指定的key,則直接輸出該key