最愛Java

          書山有路勤為徑,學海無涯苦作舟

          Struts2學習筆記——輸入校驗(二)

              對于login方法的校驗,可以通過<ActionClassName>-<ActionAliasName>-validation.xml文件來校驗,即RegistAction-login-validation.xml文件進行校驗。同時,RegistAction-validation.xml的校驗規則仍舊對login方法有效。即login方法的校驗規則是Region-validation.xml和RegistAction-login-validation.xml的總和。
              如果RegistAction繼承了BaseAction,那么對于BaseAction類的校驗規則也會被RegistAction類所繼承校驗。具體來說,其校驗規則的搜索文件規則如下:
                  BaseAction-validation.xml
                  BaseAction-別名-validation.xml
                  RegistAction-validation.xml
                  RegistAction-別名-validation.xml

              對于Struts2所支持的內建校驗器,我們可以通過xwork.2.1.2.jar中的com/opensymphony/xwork2/validator/validators/default.xml文件查看。

              除了配置文件,Struts2也支持Annotation。下面就是使用Annotation配置的RegistAction:

          @Validation()
          public class RegistAction extends ActionSupport {
              private static final long serialVersionUID = -2113900523366315993L;
              
              //該請求包含的4個請求參數
              private String name;
              private String pass;
              private int age;
              private Date birth;
              
              
              public String getName() {
                  return name;
              }
                  @RequiredStringValidator(type=ValidatorType.FIELD,key="name.required",message="")
                  @RegexFieldValidator(type=ValidatorType.FIELD,expression="\\w{4,25}",key="name.regex",message="")
              public void setName(String name) {
                  this.name = name;
              }
              public String getPass() {
                  return pass;
              }
                  @RequiredStringValidator(type=ValidatorType.FIELD,key="pass.required",message="")
                  @RegexFieldValidator(type=ValidatorType.FIELD,expression="\\w{4,25}",key="pass.regex",message="")
              public void setPass(String pass) {
                  this.pass = pass;
              }
              public int getAge() {
                  return age;
              }
                  @IntRangeFieldValidator(message="",key="age.range",min="1",max="150")
              public void setAge(int age) {
                  this.age = age;
              }
              public Date getBirth() {
                  return birth;
              }
                  @DateRangeFieldValidator(message="",key="birth.range",min="1900/01/01",max="2050/01/21")
              public void setBirth(Date birth) {
                  this.birth = birth;
              }
          }

               

              對于不能通過內置校驗器進行校驗的邏輯,則可通過重寫validate()方法來實現。如果一個Action中存在多個邏輯處理,則需要通過validateXxx()方法來分別進行校驗,其中Xxx代表方法名。如login()方法對應的校驗方法為validateLogin()。

              Struts2的輸入校驗流程:

              1。類型轉換器負責對字符串的請求參數執行類型轉換,并將這些值設置成Action的屬性值。

              2。在執行類型轉換過程中,如果發生異常,則將異常保存到ActionContext中,并由conversionError攔截器負責將其封裝到fieldError里。然后執行第3步;如無異常,直接執行第3步。

              3。調用Struts2內置的輸入校驗規則進行輸入校驗

              4。通過放射調用validateXxx()方法。

              5。調用validate()方法。

              6。如果上述都未發生fieldError,將調用Action里處理用戶請求的處理方法;如果出現了fieldError,則轉入input邏輯視圖所指定的視圖資源。

          posted on 2010-10-24 15:35 Brian 閱讀(487) 評論(1)  編輯  收藏 所屬分類: Struts2

          評論

          # re: Struts2學習筆記——輸入校驗(二) 2014-08-04 20:58 caipc

          ValidatorType.FIELD是什么意思呢?  回復  更多評論   

          公告


          導航

          <2010年10月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 姜堰市| 三都| 鄂托克旗| 读书| 房产| 卓尼县| 民县| 镇远县| 义乌市| 宜君县| 砚山县| 沽源县| 扶风县| 太白县| 米林县| 湘潭市| 阳新县| 仪陇县| 兰考县| 武安市| 察雅县| 新建县| 绥棱县| 太仓市| 吐鲁番市| 大渡口区| 武冈市| 阜城县| 涟源市| 喀喇沁旗| 临高县| 陈巴尔虎旗| 临安市| 四会市| 伊宁市| 庆元县| 蒙自县| 庄浪县| 渝中区| 岗巴县| 伊宁市|