整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          jquery.Validate 形式的驗證方式

          halo.validate

          @Validate(rules = { 
           @Rule(value = "required:true", message = "用戶名不能為空"), 
           @Rule(value = "checkUsernameExists:", message = "用戶名不能重復"), 
           @Rule(value = "maxlength:10", message = "輸入長度最多是 10 的字符串(漢字算一個字符)。"), 
           @Rule(value = "minlength:5", message = "輸入長度最小是 5 的字符串(漢字算一個字符)。")
          })
          private String username;
          @Validate(rules = { @Rule(value = "required:true", message = "密碼不能為空") })
          private String password;
          public static void main(String[] args) {
           User user = new User();
           user.setUsername("admin");
           IValidateService validate = new BaseValidateService();
           validate.validate(user);
          }
          

          jquery.Validate 形式的驗證方式 繼承Validation 實現驗證 配置ValidationRegister 注解

          #例子:

          ###校驗器 @ValidationRegister("checkUsernameExists") public class UsernameValidation implements Validation {

           @Override
           public Boolean validate(Object attrValue, Class<?> attrType, Object params) {
           if (attrValue.equals("admin")) { return true; }
           return false;
           }
          }
          

          ###配置 加入validate 配置(halo.validate.yaml 默認放于/src/main/resources): message 提示信息, packagesToScan是掃描注冊的驗證類

          validate:
          	packagesToScan: com.dasuanzhuang.halo.test	
           message:
           required: 不能為空
           maxlength: 長度不能超過{0}
           minlength: 長度不能小于{0}	
          

          ###應用:

          @Validate(rules = { 
           @Rule(value = "required:true", message = "用戶名不能為空"), 
           @Rule(value = "checkUsernameExists:", message = "用戶名不能重復")
          })
          private String username;
          

          ###驗證 public static void main(String[] args) { User user = new User(); user.setUsername("admin"); IValidateService validate = new BaseValidateService(); validate.validate(user); }

          ###出錯提示: Exception in thread "main" com.dasuanzhuang.halo.validate.error.ValidateException: [User.username(java.lang.String)] at com.dasuanzhuang.halo.validate.BaseValidateService.validate(BaseValidateService.java:115) at com.dasuanzhuang.halo.test.Test.main(Test.java:45) Caused by: com.dasuanzhuang.halo.validate.error.ValidateException: [rule:{checkUsernameExists:},message:用戶名不能重復] at com.dasuanzhuang.halo.validate.BaseValidateService.parseRuleAndValidate(BaseValidateService.java:60) at com.dasuanzhuang.halo.validate.BaseValidateService.validate(BaseValidateService.java:83) ... 1 more

          以上是halo.validate的全部配置,配置packagesToScan標簽可以掃描ValidationRegister注解的類

          #@Validate 驗證注解: 可以注釋到屬性上 ,驗證的時候會獲取這個注解 rules,規則列表,可以存在多個驗證規則 objClass:如果對象內存在驗證對象,可以添加objClass = Role.class 標識當前對象需要驗證,如果不加,只驗證規則驗證

          #@Rule 是驗證規則: 你可以在value中填寫驗證規則如: required:true ,必須以:分割 左邊代表校驗器標識,右邊標識傳遞的參數,沒有參數可以為空,多余一個值用[1,2,3]類似數組的表現形式:驗證注解中可以存在多個規則。

          #校驗器標識

          系統默認的校驗器包括required,maxlength,minlength,也可以自定義校驗器,以下校驗器標識為checkUsernameExists
          @ValidationRegister("checkUsernameExists")
          public class UsernameValidation implements Validation {
           @Override
           public Boolean validate(Object attrValue, Class<?> attrType, Object params) {
           if (attrValue.equals("admin")) { return true; }
           return false;
           }
          }
          

          #自定義校驗器:

          繼承Validation 并且 需要配置注解ValidationRegister,實現validate(Object attrValue, Class<?> attrType, Object params) 方法,attrValue 傳入屬性值,attrType屬性類型,params 冒號后面的參數,如果是多個值,以String[] 形式傳遞
          required,maxlength,minlength 使用說明:
          required:true 對象不為空,如果是String類,默認會驗證是否為空字符串
          maxlength:10 表示長度不能超過10
          minlength:10 表示長度最小不能小于10
          

          #支持內部對象驗證

          @Validate(
           rules = {
           @Rule(value = "required:true", message = "角色不能為空")
           },
           objClass = Role.class
          )
          private Role role ;
          @Validate(
           rules = {
           @Rule(value = "required:true", message = "角色list不能為空")
           },
           objClass = Role.class
          )
          private List<Role> roles ; 
          @Validate(
           rules = {
           @Rule(value = "required:true", message = "角色map不能為空")
           },
           objClass = Role.class
          )
          private Map<String,Role> roleMap;
          

          role是嵌套對象,在@Validate 中指定objClass = Role.class,就可以完成嵌套對象驗證

           @Validate(rules = { 
           @Rule(value = "required:true", message = "用戶名不能為空"), 
           @Rule(value = "checkUsernameExists:", message = "用戶名不能重復"), 
           @Rule(value = "maxlength:10", message = "輸入長度最多是 10 的字符串(漢字算一個字符)。"), 
           @Rule(value = "minlength:5", message = "輸入長度最小是 5 的字符串(漢字算一個字符)。")
          }, objClass = Role.class)
          

          #與spring 集成 ValidationBuilder.createValidation 根據名字返回Validation對象 ,建議重新定義ValidationBuilder.createValidation方法

          web開發中,往往會需要對用戶輸入的內容進行合法的校驗,防止用戶輸入的內容無效等存入數據庫意義不大還浪費資源。比如某些網站在注冊過程中身份證號碼是否合法、電話號碼是否填完整、郵箱格式是否正確。下面就介紹一種強大的表單驗證插件,jquery validate 插件為表單提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定制選項,滿足應用程序各種需求。該插件捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫用戶自定義方法的 API。

          jquery validate 有一套自己的校驗規則,這些網上查資料都會有,下面截圖展示下它自己的校驗規則

          validate校驗規則

          首先要先導入這三個js到你的項目里面,然后在頁面添加引用進去

          • jquery.js

          • jquery.validate.min.js

          • messages_zh.js

          一般來說validate的實現方式有兩種,下面分別介紹下著兩種不容的實現方式:

          1. 將校驗規則寫到控件中,代碼實例如下圖

          方式一

          2.將校驗規則寫到外部 js 代碼中,頁面和js分別如下圖

          頁面代碼

          外部Js代碼

          上面兩種不同的方式都是在點擊提交按鈕的時候才會觸發校驗。個人覺得jquey validate功能是比較強大的,我這里只是介紹了其中的冰上一角而已,如果你想了解的更多可以去官網上查閱更多API。歡迎大家提出你的意見或建議哈。

          釋:js文件自行下載

          html頁面:

          <!doctype html>

          <html lang="en">

          <head>

          <meta charset="utf-8">

          <title>jQuery validation之表單驗證</title>

          <script src="./jquery-1.11.1.min.js"></script>

          <script src="./jquery.validate.min.js"></script>

          <script>

          $(function () {

          $("#login").validate({

          rules:{//驗證規則

          name:{

          required:true,

          minlength:2,

          maxlength:10

          },

          password:{

          required:true,

          }

          },

          messages:{//提示信息:與rules是"一一對應"的

          name:{

          required:'不能為空',

          minlength:'最小為2位',

          maxlength:'最大為10位'

          },

          password:{

          required:'不能為空',

          }

          }

          })

          });

          </script>

          </head>

          <body>

          <form action="" method="get" id="login">

          用戶名:<input name="name" type="text"><br />

          密碼:<input name="password" type="password" /><br />

          <input type="submit" class="button" value="登錄">

          </form>

          </body>

          </html>


          主站蜘蛛池模板: 香蕉免费一区二区三区| 精品久久久中文字幕一区| 色一情一乱一区二区三区啪啪高| 一区二区三区国模大胆| 亚洲综合激情五月色一区| 国产精华液一区二区区别大吗| 国产福利无码一区在线| 国产香蕉一区二区在线网站 | 少妇精品久久久一区二区三区 | 久久精品无码一区二区WWW| 成人影片一区免费观看| 国产AⅤ精品一区二区三区久久| 亚洲av无码一区二区三区人妖| 精品欧洲av无码一区二区14| 国产精品高清一区二区三区不卡| 久久久精品人妻一区二区三区 | 精品国产一区二区三区久| 亚洲高清一区二区三区电影 | 相泽南亚洲一区二区在线播放| 亚洲AV成人一区二区三区在线看| 乱子伦一区二区三区| 末成年女A∨片一区二区| 精品无码一区在线观看| 日韩免费无码视频一区二区三区| 色窝窝无码一区二区三区| 久久无码人妻一区二区三区 | 亚洲伦理一区二区| 日韩精品中文字幕无码一区| 日韩免费无码一区二区三区| 中文字幕一区二区三区久久网站 | 国产欧美一区二区精品仙草咪| 无码中文字幕乱码一区| 国产婷婷色一区二区三区深爱网| 国产精品亚洲一区二区三区久久| 一区二区高清视频在线观看| 国产福利电影一区二区三区久久老子无码午夜伦不 | 日本一区二区三区免费高清| 怡红院美国分院一区二区| 一区国严二区亚洲三区| 久久国产免费一区二区三区 | 国产精品一区三区|