Terry原創(chuàng),轉(zhuǎn)載請(qǐng)說(shuō)明作者及出處。 使用平臺(tái):Eclipse3.2+MyEclipse5.01GA 首先,Validator驗(yàn)證框架最好要在Struts1.2下使用,當(dāng)然在Struts1.1下也是可行的,只是在Struts1.2下能支持得更好。 在Struts-Config.xml配置文件里添加插件,或是把下面的文本內(nèi)容復(fù)制到Struts-Config.xml中: <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> 在MyEclipse下建立validation.xml的步驟如下: 在項(xiàng)目的根目錄處點(diǎn)擊鼠標(biāo)右鍵,選擇新建“XML(Basic Templates)”,在彈出的窗口中選擇“Create XML file from a DTD file”下一步,將文件目錄設(shè)置到WEB-INF下,文件名取為“validation.xml”下一步;在這里點(diǎn)擊“Select XML Catalog entry”選項(xiàng),并選擇KEY名為“-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN”的選項(xiàng),下一步;此處已經(jīng)不需要再設(shè)置什么,直接點(diǎn)擊“Finish”完成validation.xml的建立,通過(guò)這樣的建立文件,在編輯過(guò)程中輸入"<"符號(hào)后,編輯器就會(huì)自動(dòng)查找與當(dāng)前結(jié)構(gòu)匹配的Validator標(biāo)簽。 下面介紹一下validation.xml配置文件的標(biāo)簽: <form-validation></form-validation>是總框架 <formset></formset>是對(duì)Form里的數(shù)據(jù)進(jìn)行配置 <form name="ActionForm對(duì)應(yīng)的名稱(chēng)"></form>對(duì)一個(gè)ActionForm里的數(shù)據(jù)進(jìn)行驗(yàn)證配置 <field property="ActionForm里的屬性名" depends="驗(yàn)證規(guī)則,可以是Validation-rules里定義好的也可以是自定義的驗(yàn)證規(guī)則">這里配置一個(gè)屬性的驗(yàn)證內(nèi)容 <arg0 name="對(duì)應(yīng)的驗(yàn)證規(guī)則名稱(chēng)" key="可以直接填入數(shù)值,也可填入變量表達(dá)式:${var:變量名}" resource="true/false"(代表是否從資源文件中讀取信息,否則Key的值以參數(shù)的形式返回)> <var></var>定義一個(gè)變量的標(biāo)簽體,可以在里面具體設(shè)置變量的名稱(chēng)以及數(shù)值 <var-name>對(duì)應(yīng)Key里定義的變量名稱(chēng)</var-name> <var-value>值</var-value> <msg name="對(duì)應(yīng)的驗(yàn)證規(guī)則名稱(chēng)" key="資源文件中定義的變量名稱(chēng)">這里定義了信息變量后,會(huì)默認(rèn)定義的信息變量。 在驗(yàn)證規(guī)則中大部分可以使用已經(jīng)預(yù)定義好的規(guī)則,它們?cè)趘alidator-rules.xml里,當(dāng)然我們自己也可以定義規(guī)則。 實(shí)例如下: <form-validation> <formset> <form name="employeeActionForm"> <field property="vname" depends="required,maxlength"> <arg0 key="employee.name"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>10</var-value> </var> </field> <field property="vsex" depends="required,maxlength"> <arg0 key="employee.sex"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>5</var-value> </var> </field> <field property="vage" depends="required,integer,intRange"> <arg0 key="employee.age"/> <arg1 name="intRange" key="${var:min}" resource="false"/> <arg2 name="intRange" key="${var:max}" resource="false"/> <var> <var-name>min</var-name> <var-value>1</var-value> </var> <var> <var-name>max</var-name> <var-value>100</var-value> </var> </field> <field property="vmoney" depends="integer"> <arg0 key="employee.money"/> </field> </form> </formset> </form-validation> 要想在A(yíng)ctionForm里應(yīng)用上Validator框架,就必須繼承ValidatorForm類(lèi); 在MyEclipse下新建ActionForm時(shí)可以將其SuperClass設(shè)置為“org.apache.struts.validator.ValidatorForm” 如果是已經(jīng)建好的ActionForm要改為使用Validator驗(yàn)證需如下操作: 導(dǎo)入org.apache.struts.validator.ValidatorForm包,將類(lèi)ActionForm擴(kuò)展類(lèi)從原先的ActionForm改為ValidatorForm 而原先的public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)和 public ActionErrors validate(ActionMapping mapping, ServletRequest request) 以及Reset方法去除即可。 應(yīng)用程序全局資源文件:ApplicationResources.properties 可以在文件里添加錯(cuò)誤提示信息,格式為: 變量名:提示文本(注:若要使用中文信息則要在轉(zhuǎn)換之前將中文的文本填寫(xiě)完,轉(zhuǎn)換后文件名后需要加上_zh_CN才會(huì)被系統(tǒng)識(shí)別為簡(jiǎn)體中文) 內(nèi)容如下: employee.name=員工姓名 employee.sex=員工性別 employee.age=員工年齡 employee.money=期望薪金 errors.required={0}不能為空,請(qǐng)?zhí)顚?xiě)! errors.integer={0}必需為一個(gè)整數(shù)值 errors.range={0}必需為1~100之間的一個(gè)數(shù)字 errors.maxlength={0}的最大數(shù)不能越過(guò){1}! 注:若需要換行可以在文本后面加上"<br>"; 以上的例子只是說(shuō)明了資源文件的使用方法,但是如果就想這樣來(lái)顯示中文提示信息是不可行的, 轉(zhuǎn)換的命令是: native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh_CN.properties native2ascii命令是Java JDK目錄下BIN目錄里的一個(gè)可執(zhí)行文件,若發(fā)現(xiàn)不能執(zhí)行,請(qǐng)修改系統(tǒng)環(huán)境變量,即在Path變量里加入"X:\...\jdk1.5.1\bin;",修改完需要重新啟動(dòng)系統(tǒng)所配置的環(huán)境變量才可生效。 可將命令制作成批命令,注意:轉(zhuǎn)換格式后,在工程里需要手動(dòng)刷新文件,否則項(xiàng)目不會(huì)識(shí)別你所做的改動(dòng) 到這里Validator驗(yàn)證框架的所有配置已經(jīng)完成此時(shí)你只要在頁(yè)面相應(yīng)位置放入<html:errors/>標(biāo)簽即可顯示,這樣是將所有的錯(cuò)誤在同一個(gè)地方顯示,若想實(shí)在在每個(gè)輸入控件后面顯示錯(cuò)誤提示,就必須手動(dòng)設(shè)置標(biāo)簽的屬性,如:<html:errors property="XXX">; |
聯(lián)系客服