迷失北京

          BlogJava 聯系 聚合 管理
            60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks
          validation.xml 的命名規則和放置路徑:
          文件名:<ActionClassName>-validation.xml
          <ActionClassName>就是要驗證的Action類的名字。要將此文件放于Class文件相同的目錄。

          如果在Action類在struts配置中有多個action實例(action name),那么對應某個action的驗證文件名規則如下:

          文件名:<ActionClassName>-<aliasName>-validation.xml

          例如:UserAction-login-validation.xml

          (注意:上面的<aliasName>并不是method name,而是struts.xml中配置的action的name)


          validation.xml 的內容示例:
          其實message的信息還有可以配置國際化:配置方法也極其簡單就是<message key="userpass.required"></message>,key對應的是國際化配置文件中的國際化信息。

          Struts2 的驗證規則大概有以下數種:
          required:必填校驗器
          requiredstring:必填字符串校驗器
          int:整數校驗器
          double:雙精度浮點數校驗器
          date:日期校驗器
          expression:表達式校驗器
          fieldexpression:字段表達式校驗器
          email:電子郵件校驗器
          url:網址校驗器
          visitor:Visitor校驗器
          conversion:轉換校驗器
          stringlength:字符串長度校驗器
          regex:正則表達式校驗器

          常用的驗證規則:

          1。必填檢驗
          <validators>
          <field name="username">
          <field-validator type="required">
          <message>指定檢驗失敗的提示信息</message>
          </field-validator>
          </field>
          </validators>


          2。必填字符串檢驗
          <validators>
          <field name="username">
          <field-validator type="requiredstring">
          <param name="trim">true</param>
          <message>指定檢驗失敗的提示信息</message>
          </field-validator>
          </field>
          </validators>


          3。整數檢驗器/浮點檢驗
          <validators>
          <field name="age">
          <field-validator type="int">
          <param name="min">1</param>
          <param name="max">150</param>
          <message>年紀必須在1到150之間</message>
          </field-validator>
          </field>
          </validators>


          4。日期檢驗
          <validators>
          <field name="birth">
          <field-validator type="date">
          <param name="min">1900-01-01</param>
          <param name="max">2050-02-21</param>
          <message key="birth.range"/>
          </field-validator>
          </field>
          </validators>


          5.字段表達式檢驗器(要求指定字段滿足一個邏輯表達式)
          <validators>
          <field name="re_pass">
          <field-validator type="fieldexpression">
          <!--指定邏輯表達式 -->
          <param name="expression"> (pass eq re_pass)</param>
          <message>密碼必須和確認密碼相等</message>
          </field-validator>
          </field>
          </validators>


          6.郵件地址校驗
          <validators>
          <field name="email">
          <field-validator type="email">
          <message>你的電子郵件地址必須是一個有效的電郵地址</message>
          </field-validator>
          </field>
          </validators>


          7。網址 檢驗
          <validators>
          <field name="url">
          <field-validator type="url">
          <message>你的主頁地址必須是一個有效的網址</message>
          </field-validator>
          </field>
          </validators>


          8.字符串長度檢驗
          <validators>
          <field name="user">
          <field-validator type="stringlength">
          <param name="minlength">4</param>
          <param name="maxlength">20</param>
          <message>你的用戶名長度必須在4到20之間</message>
          </field-validator>
          </field>
          </validators>


          9.正則表達式檢驗
          <validators>
          <field name="user">
          <field-validator type="regex">
          <param name="expression_r"><![CDATA[(\w{4,25})]]></param>
          <message>您輸入的用戶名只能是字母和數組,且長度必須在4到25之間</message>
          </field-validator>
          </field>
          </validators>

          接下來我舉一個簡單的登錄驗證的例子:
          login.jsp
          這里有個地方需要注意:form中要加入validate=“true”這個屬性。

          ***Action-validation.xml
          這種方式就使用了國際化的信息。

          ***Action.action這個挺簡單的就是常規的action寫法,在execute中驗證表單,或自己封裝方法驗證表單,但是不能繼承validate()方法,因為action執行的時候實現檢察validate方法的,如果這樣的話就配置重復了,不過有什么結果我沒有測試(沒啥意義)。

          struts.xml配置
          有一點有必要提一下,action中必須配置input這個result,因為如果驗證失敗后struts2會自動轉向到input的result,不管你的action中配置的驗證失敗的result是什么。所以這個input屬性的result不能落下。
          效果
          火狐下面的中文語言:
          ie下的英文語言:


          posted on 2010-11-15 21:34 王康 閱讀(10203) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 肇庆市| 屏东县| 临西县| 渑池县| 义马市| 双鸭山市| 定兴县| 岱山县| 阳朔县| 水富县| 施甸县| 会理县| 江口县| 望城县| 郸城县| 内黄县| 福建省| 保亭| 金堂县| 邹平县| 新泰市| 阜新市| 兰西县| 灵武市| 五指山市| 嘉定区| 南丹县| 长岭县| 桃园市| 象山县| 西昌市| 香港| 察隅县| 芜湖市| 安阳县| 巴青县| 靖边县| 博乐市| 屏东县| 白银市| 方正县|