struts表單校驗

          Posted on 2006-03-17 11:41 Computerboy 閱讀(240) 評論(0)  編輯  收藏 所屬分類: 編程技術

          簡要描述

          Struts采用Validator框架(Validator框架現在是Jakarta Commons項目的一部分)來解決校驗問題,它將校驗規則代碼集中到外部的且對具體的應用程序中立的.xml文件中,這樣,就將那些到處出現的校驗邏輯從應用程序中分離出來,任何一個Struts應用都可以使用這個文件,同時還為校驗規則的擴展提供了便利。更難能可貴的是由于Validator框架將校驗中要用到的一些消息等信息與資源綁定有機結合在一起,使得校驗部分的國際化編程變得十分的便捷和自然。

          主要構成

          Validator框架大致有如下幾個主要組件:

          • 校驗類:
            是Validator框架調用的一些Java類,它處理那些基本的通用的校驗,包括required、mask(匹配正則表達式)、最小長度、最大長度、范圍、日期等。校驗類可以根據需要擴展。
          • 配置文件:
            主要包括兩個配置文件,一個是validator-rules.xml,主要包含一些通用的校驗規則,另一個是validation.xml,包含需要校驗的一些form及其組件的集合。
          • 資源綁定:
            提供國際化標簽和消息,缺省使用struts的資源綁定。即校驗所用到的一些標簽與消息都寫在ApplicationResources.properities文件中。
          • Jsp 標簽:
            為給定的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.xmlvalidation.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為校驗規則的名稱。validator_rules.xml中缺省定義的校驗規則請參考struts的文檔。

          <arg0 ?? key= "customerForm.name" /> 指定校驗規則中使用的消息在消息資源文件中的key值

          3) 表單類繼承

          為了使服務器邊的驗證能夠進行,將用到的formBean從ActionForm的子類改為ValidatorForm的子類,如:

          public class BaseForm extends ValidatorForm implements Serializable

          4) 客戶端校驗

          要實現客戶端校驗,必須在提交的時候運行校驗框架生成的javascript代碼。

          在<html:form>標簽中,添加屬性 onsubmit="return validateCustomerForm(this)"

          在標簽后加上:

          < 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>

          posts - 40, comments - 39, trackbacks - 0, articles - 0

          Copyright © Computerboy

          主站蜘蛛池模板: 汉源县| 长武县| 门头沟区| 阿拉善左旗| 松桃| 全南县| 白银市| 通州市| 南昌市| 安丘市| 怀远县| 苏尼特右旗| 本溪市| 卢龙县| 囊谦县| 文登市| 富锦市| 渭源县| 阳江市| 金华市| 怀来县| 宣汉县| 锡林郭勒盟| 喀喇| 齐齐哈尔市| 巴林右旗| 云阳县| 交口县| 大余县| 大庆市| 澄迈县| 双柏县| 财经| 馆陶县| 昌江| 桂阳县| 固始县| 内黄县| 宁德市| 河北区| 达州市|