<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    Struts1.x系列教程(11):Validator驗證框架高級應用

    本文為原創,如需轉載,請注明作者和出處,謝謝!

    上一篇Struts1.x系列教程(10):Validator驗證框架入門

    Struts2教程4:使用validate方法驗證數據

    Struts2教程5:使用Validation框架驗證數據

        《Struts1.x系列教程(10):Validator驗證框架入門》一文中給出的例子中的nameageemail都是簡單的屬性,如果是嵌套的屬性(也就是一個屬性的數據類型是另外一個帶有屬性的類),可以使用圓點(.)符號來訪問。如我們可以通過設置<field>元素的property屬性值為“employee.salary”來驗證employee屬性中的salary屬性。
        如果要驗證的索引屬性,我們可以使用<field>元素的indexedListProperty屬性來指定這個索引屬性,如下面代碼如示:

      <field indexedListProperty="items" depends=>  </field>

        在使用上述配置代碼后,Validator框架將會按著depends屬性中的約束來驗證items屬性的每一個值。我們還可以將property和indexedListProperty配合使用,如下面代碼所示:

      <field indexedListProperty="items"  property="employee.age"  depends=>  </field>

        Validator框架將根據上述的配置代碼來驗證items屬性中的每一項的employee.age屬性。

    二、使用常量和變量

    1. 常量

       
    《Struts1.x系列教程(10):Validator驗證框架入門》一文中的name屬性使用了mask進行驗證。這個mask實際上代表了一個正則表達式。但如果在validator.xml文件中有很多個地方需要用到這個正則表達式,那就它就會在很多地方重復。為此,我們可以使用常量來避免這種事情發生。   

    常量分為全局常量和局部常量。

    1)全局常量

    全局常量可以被用在validator.xml中定義的所有form中。我們可以使用<global>元素來配置全局常量。為了配置全局常量,將如下的內容放到第一個<formset>元素的前面。

      <global>
          
    <constant>
              
    <constant-name>mask</constant-name>
              
    <constant-value> ^[a-zA-Z0-9]*$ </constant-value>
          
    </constant>
      
    </global>
      
    <formset>

    (2)局部常量
        局部常量需要放到<formset>元素的開始位置(根據DTD的定義,局部常量只能放到這里,而全局常量可以放在第一個<formset>元素的前面,也可以放到<formset>的后面)。如下面的代碼所示:

      <formset>
          
    <constant>
              
    <constant-name>mask</constant-name>
              
    <constant-value> ^[a-zA-Z0-9]*$ </constant-value>
          
    </constant>
          
    <form name="firstValidatorForm"> 
           
      
    </formset>

     我們可以編寫如下的代碼來使用mask常量:

    <var>
        <var-name>mask</var-name>
        <var-value> ${mask}</var-value>
    </var>


    2. 變量

        Validator框架通過<var>元素來定義變量。變量將作為<field>的子元素被使用。主要向depends屬性值(如mask)以及<msg>的錯誤信息傳遞數據。如下面的代碼通過變量required將“姓名”傳遞給了錯誤信息的第一個參數{0}。

    <field property="name"  depends="required ">
        <msg name="required" key="error.name.blank" />
        <arg name="required" key="${var:required}" position="0" resource="false" />
        <var>
            <var-name>required</var-name>
           
    <var-value>姓名</var-value>
       
    </var>
    </field>

    三、客戶端驗證

     使用Validator框架的好處之一就是可以很容易地將服務端驗證變為客戶端驗證(JavaScript驗證)。為了完成這一轉換,我們只需要修改兩個地方。現在就拿《Struts1.x系列教程(10):Validator驗證框架入門》中的firstValidator.jsp為例來說明要修改什么。
        首先,在firstValidator.jsp中的任何地方(當然,任何地方指的是客戶端代碼區,并不包括<%...%>和<%--... --%>所包含的內容)添加如下的<html:javascript>標簽:

      <html:javascript formName="firstValidatorForm"/>

    然后在<html:form>標簽中加入如下的屬性:

      onsubmit="return validateFirstValidatorForm(this);"

        現在再運行firstValidator.jsp,如果輸入錯誤,IE就會直接彈出錯誤信息對話框。我們查看客戶端源代碼就會發現,在源代碼中多了很多JavaScript代碼。實際上,當加入<html:javascript>標簽后,在運行JSP頁面時,Servlet引擎就會將Validator框架中JavaScript版本的預定義驗證代碼連同HTML代碼都發送到客戶端。這些JavaScript代碼中有一個入口函數,這個函數的名稱前綴為validate,后面是首字母大寫的Form名。在<html:form>標簽中的onsubmit事件中調用這個入口函數就可以通過JavaScript代碼來驗證客戶端錄入的數據了。

    下一篇:
    Struts1.x系列教程(12):Validator驗證框架的內置標準驗證





    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-02-14 19:14 銀河使者 閱讀(3399) 評論(1)  編輯  收藏 所屬分類: javaweb 原創struts1.x

    評論

    # re: Struts1.x系列教程(11):Validator驗證框架高級應用[未登錄]  回復  更多評論   

    1
    2012-11-29 15:15 | 0
    主站蜘蛛池模板: 手机在线看永久av片免费| 亚洲国产主播精品极品网红| 亚洲日本VA午夜在线影院| 国产黄色片在线免费观看| 一级中文字幕乱码免费| 噜噜噜亚洲色成人网站∨| 日日AV拍夜夜添久久免费| 成人片黄网站色大片免费观看APP| 亚洲精品mv在线观看| 亚洲精品麻豆av| 国产精品色拉拉免费看| j8又粗又长又硬又爽免费视频 | 无码人妻精品中文字幕免费 | 永久免费在线观看视频| 亚洲av无码专区国产不乱码 | 亚洲综合伊人久久综合| 美女视频黄的全免费视频网站| 日本高清不卡中文字幕免费| 久久久国产精品亚洲一区| 亚洲国产成人五月综合网| 免费可以看黄的视频s色| 天黑黑影院在线观看视频高清免费| 亚洲女人初试黑人巨高清| 中文字幕亚洲电影| 成年在线观看免费人视频草莓| 日本免费中文字幕| jizz18免费视频| 看亚洲a级一级毛片| 亚洲另类视频在线观看| 亚洲国产精品国自产拍AV| 亚洲AV无码乱码在线观看性色扶| 国产又黄又爽又猛免费app| 青青青国产手机频在线免费观看| 污视频网站免费观看| 亚洲www77777| 亚洲视频免费在线播放| 亚洲成AV人在线播放无码| 国产啪亚洲国产精品无码 | 免费一级毛片在级播放| 最近2019中文字幕免费看最新| 91av在线免费视频|