天天看點

Struts2聲明式驗證

聲明式驗證步驟

一 、編寫action類

二、在struts.xml中配置該action

三、編寫驗證規則的配置檔案

 去struts2-blank\web-inf\src\java\example 下找到 login-validation.xml  複制 然後重命名

命名必須為   必須放置在action類的同目錄下

<actionclassname>-validation.xml 

<actionclassname>-<actionaliasname>-validation.xml 

其中<actionaliasname>就是struts.xml中<ation>的name屬性值。

本例子 為 checkaction-validation.xml

一個action類可以應答多個action請求 ,多個action 請求使用不同的驗證規則 怎麼辦?

解決方案

        為每個不同的action請求 定義其對應的驗證檔案:actionclassname-aliasname-

        validation.xml不帶别名的配置檔案:actionclassname-validation.xml

        中的驗證規則依然會起作用 可以吧各個action公有的驗證規則配置在其中 但需要注意的是

        隻适應于某一個action的請求的驗證規則就不要再這裡

        配置了

如下圖

Struts2聲明式驗證
Struts2聲明式驗證
Struts2聲明式驗證

字段驗證

字段校驗器配置格式:

<field name="被校驗的字段">

       <field-validator type="校驗器名">

             <!--此處需要為不同校驗器指定數量不等的校驗規則-->

              <param name="參數名">參數值</param>

                  ....................

               <!--校驗失敗後的提示資訊,其中key指定國際化資訊的key-->

                <message key="i18nkey">校驗失敗後的提示資訊</message>

                 <!--校驗失敗後的提示資訊:建議用gettext("i18nkey"),否則可能出現freemarker template error-->

       </field-vallidator>

        <!-- 如果校驗字段滿足多個規則,下面可以配置多個校驗器-->

</field>

非字段驗證

非字段校驗器配置格式:

<validator type="校驗器名">

          <param name="fieldname">需要被校驗的字段</param>

          <!--此處需要為不同校驗器指定數量不等的校驗規則-->         

<param name="參數名">參數值</param>

            <!--校驗失敗後的提示資訊,其中key指定國際化資訊的key-->

         <message key="i18nkey">校驗失敗後的提示資訊</message>

           <!--校驗失敗後的提示資訊:建議用gettext("i18nkey"),否則可能出現freemarker template error-->

</validator>

(1)字段校驗代碼,例如下面的代碼:

xml代碼

    <field name="....">  

      <field-validator type="..."></field-validator>  

    </filed>  

(2)非字段校驗代碼,例如下面的代碼:

    <validators>  

        <validator type="required">  

            <param name="fieldname">username</param>  

            <message>使用者名必須填寫</message>  

        </validator>  

    </validators>  

   struts2的校驗大部分是圍繞action元件的字段屬性來實作的,主要是判斷某個字段屬性的輸入是否有效,是以又把這種内置的校驗器成為字段校驗器。還有一種校驗器它不是針對某個字段,而是針對多個字段的輸入值之間的邏輯關系進行校驗,典型的例子是再次輸入密碼的判斷。内置的expression校驗器就是一種非字段校驗器。

    <validator type="expression">  

            <param name="expression"><![cdata[(password==repassword)]]></param>  

            <message>兩次輸入的密碼必須完全一緻!</message>  

        </validator> 

 非字段校驗:先指定校驗器:由誰來校驗,來校驗誰!

字段校驗器:先指定校驗的屬性:我來校驗誰,由誰來校驗!

短路驗證

加  short-circuit="true"  表示目前驗證器沒有通過後 直接傳回input視圖 不會驗證後面的驗證器