周游世界

          喂馬, 劈柴, 周游世界

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
          簡要描述
          Struts采用Validator框架(Validator框架現(xiàn)在是Jakarta Commons項目的一部分)來解決校驗問題,它將校驗規(guī)則代碼集中到外部的且對具體的應(yīng)用程序中立的.xml文件中,這樣,就將那些到處出現(xiàn)的校驗邏輯從應(yīng)用程序中分離出來,任何一個Struts應(yīng)用都可以使用這個文件,同時還為校驗規(guī)則的擴(kuò)展提供了便利。更難能可貴的是由于Validator框架將校驗中要用到的一些消息等信息與資源綁定有機(jī)結(jié)合在一起,使得校驗部分的國際化編程變得十分的便捷和自然。

          主要構(gòu)成
          Validator框架大致有如下幾個主要組件:
          ? * 校驗類:
          ??? 是Validator框架調(diào)用的一些Java類,它處理那些基本的通用的校驗,包括required、mask(匹配正則表達(dá)式)、最小長度、最大長度、范圍、日期等。校驗類可以根據(jù)需要擴(kuò)展。
          ? * 配置文件:
          ??? 主要包括兩個配置文件,一個是validator-rules.xml,主要包含一些通用的校驗規(guī)則,另一個是validation.xml,包含需要校驗的一些form及其組件的集合。
          ? * 資源綁定:
          ??? 提供國際化標(biāo)簽和消息,缺省使用struts的資源綁定。即校驗所用到的一些標(biāo)簽與消息都寫在ApplicationResources.properities文件中。
          ? * Jsp 標(biāo)簽:
          ??? 為給定的form或者action path生成前端校驗的 JavaScript 代碼。
          ? * ValidatorForm:
          ??? 是ActionForm的一個子類。

          校驗框架的使用
          1) 配置
          在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>
          從struts的例子,拷貝文件 validator-rules.xml 和 validation.xml ,放到目錄 /WEB-INF 下面

          2) 校驗定義
          在validation.xml文件中定義校驗的表單和屬性。
          例子:
          ? <form? name="customerForm">
          ?? ??? ?<field? property="name"? depends="required">
          ?? ??? ??? ?<arg0? key="customerForm.name"/>
          ?? ??? ?</field>
          ?? ??? ?<field? property="address"? depends="required">
          ?? ??? ??? ?<arg0? key="customerForm.address"/>
          ?? ??? ?</field>
          ?? ?</form>
          其中,表單名稱customerForm必須在struts-config.xml中定義。
          property為表單的屬性。
          depends為校驗規(guī)則的名稱。validator_rules.xml中缺省定義的校驗規(guī)則請參考struts的文檔。
          ?? ?<arg0? key="customerForm.name"/>指定校驗規(guī)則中使用的消息在消息資源文件中的key值

          3) 表單類繼承
          為了使服務(wù)器邊的驗證能夠進(jìn)行,將用到的formBean從ActionForm的子類改為ValidatorForm的子類,如:
          ?? ?public class BaseForm extends ValidatorForm implements Serializable

          4) 客戶端校驗
          要實(shí)現(xiàn)客戶端校驗,必須在提交的時候運(yùn)行校驗框架生成的javascript代碼。
          在<html:form>標(biāo)簽中,添加屬性 onsubmit="return validateCustomerForm(this)"
          在標(biāo)簽后加上:
          ?? ?<html:javascript formName="customerForm"? cdata="false"
          ?? ??????? dynamicJavascript="true" staticJavascript="false"/>
          ?? ?<script type="text/javascript"
          ?? ??????? src="<c:url? value="/scripts/validator.jsp"/>"></script>
          ????? ?
          5) Action指定校驗

          在action的配置中加上指定校驗的屬性:validate="true",如:
           <action path="/customer/customer" ?
          ????????? type="com.demo.order.actions.CustomerAction" ?
          ????????? name="customerForm" ?
          ????????? parameter="method" ?
          ????????? input="add"
          ????????? unknown="false"
          ????????? validate="true">
          ??? <forward? name="view" path="model.customer.view">
          ??? </forward>
          ??? <forward? name="add" path="model.customer.add">
          ??? </forward>
          ??? <forward? name="list" path="model.customer.list">
          ??? </forward>
          ? </action>
          posted on 2006-06-28 10:32 周游世界 閱讀(214) 評論(0)  編輯  收藏 所屬分類: Struts

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 灵武市| 高州市| 新乐市| 龙陵县| 南召县| 九台市| 三亚市| 新疆| 潞西市| 龙游县| 申扎县| 阳高县| 三台县| 纳雍县| 犍为县| 嘉禾县| 施甸县| 凤庆县| 和政县| 黔西| 镇安县| 冕宁县| 定远县| 万荣县| 日喀则市| 武功县| 汤阴县| 多伦县| 青川县| 清河县| 合川市| 柳河县| 射洪县| 大港区| 德州市| 灵山县| 库尔勒市| 武胜县| 洛南县| 正蓝旗| 临城县|