|
本文記錄struts2主要的配置文件,存放位置,和注意點 (實際上,這些配置文件都是在class文件夾下起作用,不過凡是放在src文件夾下的,都會在eclipse編譯時復(fù)制到對應(yīng)的class文件夾。) 配置文件名 存放位置 備注 struts.xml src文件夾下 struts2默認配置文件
l 可通過<include>來包含別的struts配置文件。 l 在<package>中繼承其他package可以擁有其他package的配置。 l 每個action最好加一個名為"input"的<result>,為出錯默認的返回值 l 關(guān)于<package>的繼承: 如果一個package要繼承另一個package,則必須把另一個package所在的.xml配置文件include進來。只有一個例外,就是繼承structs-default包時,不需要加載struts-default.xml。 因為struts.xml是默認包含了struts-default.xml。 在package繼承時,package的先后是沒有關(guān)系的,前面的package一樣能繼承后面的package (貌似有本"權(quán)威指南"說這個還是攔截器配置,是順序,有先后的,至少我的測試,package繼承絕對沒有先后之分) 請看一個例子,其中有三個配置文件: struts-base.xml,struts-middle.xml,和struts.xml
struts-base.xml配置片斷
<struts>
<package name="base" extends="struts-default" abstract="true"> </package> </struts> struts-middle.xml配置片斷
<struts>
struts.xml配置片斷
<package name="middle" extends="base" abstract="true"> </package> </struts>
<struts>
<package name="Registaction" extends="top"> <action> </action></package> <package name="top" extends="middle"> </package> <include file="struts-middle.xml"></include> <include file="struts-base.xml"></include> </struts>
可以看到struts.xml中的配置,package繼承的順序完全是和package定義的位置相反的,不過執(zhí)行并沒有問題。 另外注意一點,struts-base.xml中,名base的package直接繼承了struts-default,而沒有引入 struts-default.xml。 你可能會由此以為每個配置文件都會自動包含struts-default.xml。不過我個人認為,這是因為struts.xml中同時包括了struts-default.xml和struts-base.xml,這兩個文件其實是在同一個配置文件中,所以base l 一些常用的屬性: struts.custom.properties :用戶自定義屬性文件,多個用逗號隔開 struts.devMode:是否處于開發(fā)模式,開發(fā)階段可設(shè)true。 struts.i18n.reload:每次請求到達重新加載資源文件,開發(fā)階段設(shè)true。 struts.ui.theme: 默認視圖主題,默認為xhtml struts.configuration.xml.reload :指定struts.xml改變后自動重新加載。默認false。 struts.custom.i18n.resources:指定struts2國際化資源文件。 struts.configuration.files:指定struts2默認加載的配置文件,該屬性默認值為struts-default.xml,struts-plugin.xml,struts.xml
messageResource_language_COUNTRY.properties 與action同目錄 本地化信息配置文件
XXXAcion-conversion.properties 與action同目錄 局部類型轉(zhuǎn)換器配置 aaaa(action中的屬性名) = package.xxxconverter
xwork-conversion.properties src文件夾下 全局類型轉(zhuǎn)換器配置 ttt(類型) = package.xxxConvertor Element_xxx=xxxType 對于沒有泛型支持的list,collection
actionname-validation.xml 和action同目錄 action對應(yīng)的驗證配置,actionname 為action的類名 xwork-validation.xml 放在src下 全局驗證 關(guān)于驗證有一點需留意,默認攔截器棧, conversionError攔截器配置都在validation攔截器之前。所以,在進行驗證之前,conversionError攔截器會先調(diào)用轉(zhuǎn)換器對頁面上的屬性進行轉(zhuǎn)換,若轉(zhuǎn)換器中拋出錯誤,會通過conversionError攔截器直接把錯誤信息返回頁面,所以也不會經(jīng)過validation了。這樣一來,validation配置里面的友好的提示信息就換成了異常里面編程人員才看得懂的message了,對于用戶而言不太好。 實際上validation攔截器所做的是服務(wù)器端驗證,它只對action里面的屬性定義的類型起作用,比如在action中某屬性attrib1是 int型的,那么像正則表達式之類針對string的驗證器就不會起作用,這和客戶端驗證不同之處在于,客戶端驗證把所有類型的輸入都看作string.
所以,頁面輸入的驗證,現(xiàn)在可以有3道。 l 第一道是仍然基于javascript的客戶端驗證 這一道其實也可以通過轉(zhuǎn)換器來識別,轉(zhuǎn)換器最先讀入時,仍然是String型,因此可以在轉(zhuǎn)換過程中對格式進行驗證。 l 第二道是轉(zhuǎn)換器轉(zhuǎn)換時的驗證(其實是拋出轉(zhuǎn)換異常,也可以當作輸入格式上的驗證) 這一道,默認的輸出message比較不友好,不過可以通過在messageResource資源文件中配置這兩個鍵值加入自己的信息: 1. Xwork.default.invalid.fieldvalue 默認類型轉(zhuǎn)換失敗信息 2. Xwork.fieldvalue.屬性名 指定屬性名的類型轉(zhuǎn)換失敗信息。 l 第三道是validation配置文件配置的服務(wù)器端驗證。 這些驗證類型名可以通過看xwork-x-x.jar中com.opensymphony.xwork2.validator.validators包內(nèi)的default.xml看到 還是得強調(diào)下,服務(wù)器端驗證主要關(guān)注的不是參數(shù)的格式,而是參數(shù)的實際內(nèi)容,服務(wù)器端驗證格式反而很不方便。 |
|
|