# 注意:本文檔后期不在跟新,新文檔遷移到:[http://www.openkit.cc/docs/openkit/#/](http://www.openkit.cc/docs/openkit/#/)
# 首先感謝使用OpenKit工具包
## 反饋交流QQ群:696279396
# 說明
> 作為java開發總我們總會遇到很多驗證的問題,之前我們再`KitUtil`中給大家提供了2個驗證的方法,一個是單個字段的驗證,`KitUtil.feikong()`和`KitUtil.isNull(Map<String, Object> map);`雖然這兩個方法中,被網友吐槽說存在拼音命名,但是不得不說,這兩個方法確實給我們提供了一定的方便,但是就算是對Map集合進行非空驗證,我們依舊是將Map集合中的參數一個一個驗證,并沒有做到對我們的對象進行驗證,所以萌生了作者的一個小的想法,就是希望可以通過簡單的方式可以對我們對象的每一個參數進行驗證。這就是我們今天說的對象字段驗證
# 驗證方式
首先我們需要在需要驗證的對象的字段上面添加一些注解,從而進行標識
# KitVerification 注解說明
|注解名|說明|屬性| 案例 |
|:--:|:--:|:--|:--:|
| @KitIsNull | 非空注解 | value:驗證失敗返回內容 |@KitIsNull("用戶名不能為空")|
| @KitIsPhone | 手機號碼驗證 | value:驗證失敗返回內容 |@KitIsPhone("")|
| @KitIsEmail | 郵箱驗證 | value:驗證失敗返回內容 |@KitIsEmail("郵箱格式不正確")|
| @KitIsCode | 身份證驗證 | value:驗證失敗返回內容 |@KitIsCode("身份證格式不正確")|
| @KitIsLong | 長度驗證 | min:最短值(-1:表示不限制)<br>max:最長值(-1:表示不限制)<br>value:驗證失敗返回內容 |@KitIsLong(min = -1, max = 5 , value ="長度必須小于5位" )|
| @KitIsUrl | 網站驗證 | value:驗證失敗返回內容 |@KitIsNull("網址格式不正確")|
| @KitIsOther | 其他驗證 | rule:需要驗證的正則表達式<br>value:驗證失敗返回內容 |@KitIsOther(rule = "[0-9]{1,2}", value ="格式不正確")|
> 特別強調一下:
> 1. 如果加了`@KitIsPhone`注解,表示要么是正確的手機號碼,要門是空值
> 2. 對象的屬性名最前面至少2個小寫字符比如不能使用`aName`
下面驗證只要一個步驟
```java
Map<String, Object> map = KitVerification.verification(<T>);
```
# 返回值說明
|屬性|說明|備注 |
|:--:|:--:|:--|:--:|
| code | 驗證結果狀態碼 | 200標識成功|
| msg | 內容說明 | 就是你注解后面的value值|
> 現在有沒有發現我們的驗證又簡單了一點呢?
# 下面我們來看看如果我想多條件驗證怎么處理
> 為了多條件處理我們單獨發布新版本 1.1.11 ,不要問我為什么跳過了 1.1.10 ,我就是為了逼死強迫癥,嘿嘿
當你使用了1.1.11版本的時候,我們可以直接采用一個`@KitIsPlus`的注解(感謝[@蘇南](https://newsn.net/)同學的命名)
有了這個注解,我們如何使用呢,下面請看,??????????????????????????
先來個Demo吧
```
@KitIsPlus(condition = "null,phone", rule = "", value = "不能為空,手機號碼格式不對")
private String demo;
```
??????????????????????????
正如你所看到的,我們可以傳入多個參數來進行驗證,多個參數用英文`,`號隔開,我們的驗證的過程,將從前往后依次驗證,如果其中有一個不符合條件,我們將直接返回,不如上面的我們的驗證他的,非空不通過,我們將不會驗證手機號碼
不要問我為什么用`,`不用`|`,我就是想不一樣
### `@KitIsPlus`為我們提供的基礎驗證參數
|參數|說明|屬性|
|:--:|:--:|:--|:--:|
| null | 非空 |驗證是否為空|
| phone | 手機號碼 |驗證是否為手機號碼 |
| code | 身份證號碼 |驗證是不是身份證號碼 |
| email | 郵箱驗證 | 驗證是不是郵箱|
| url | 網址 | 驗證是不是網址|
### 嵌套屬性注意事項
為了方便大家的使用,OpenKit給大家提供了兩個嵌套屬性`min`,`max`,先來個Demo吧
??????????????????????????
```
@KitIsPlus(condition = "min:2,max:15,phone", rule = "", value = "最短2位,最長15位,手機號碼格式不對")
private String demo;
```
??????????????????????????
可以看出,嵌套屬性我們可以在前面寫上屬性名,英文`:`后面加上屬性值,一樣的我們會從前往后依次驗證
|參數|說明|屬性| 用法|
|:--:|:--:|:--|:--:|:--:|
| min | 最小長度 |驗證內容的最小長度不能小于這個參數|@KitIsPlus(condition = "min:2", rule = "", value = "最短2位")|
| max | 最大長度 |驗證內容的最大長度不能大于這個參數 |@KitIsPlus(condition = "max:15", rule = "", value = "最長15位")|
### 自定義驗證
很多看官看到這里可能會發現我們有一個參數一直沒有使用,那就是`rule`。在我們的1.1.9版本中給大家使用了`@KitIsOther`驗證我們可以自定義一個正則進行驗證,那么在我們這個PLUS級別的驗證方法,我們當然也不能少了這個,所以如果我們提供的驗證方式還是不能滿足你的驗證方法,比如,你想驗證非空,還要驗證長度是2-15位,同時還得是正整數,那么你可以這樣寫
??????????????????????????
```
@KitIsPlus(condition = "null,min:2,max:15", rule = "^[1-9]\d*$", value = "參數不能為空,最短2位,最長15位,必須是正整數")
private String demo;
```
??????????????????????????
看了上面的這些是不是發現,Plus沒有讓你們失望呢?
> 注意:如果多個參數,前面有3個參數,提示語,必須寫三個,如果帶有`rule`,那么提示語的個數必須`rule`對應的提示語必須放在最后一個
### 同時我們提供了一些單個字段的驗證
具體的你可以參照下面的表格,這個就比較簡單了,你可以直接
|方法|參數屬性|說明|正則|
|:--:|:--:|:--:|:--|:--:|
| .isUsername | String |驗證是不是用戶名|` ^[a-zA-Z]\w{5,20}$`|
| .isPassword | String |驗證密碼格式 |`^[a-zA-Z0-9]{6,20}$`|
| .isMobile | String |手機號碼 ||
| .isEmail | String |郵箱驗證 | |
| .isChinese | String |驗證是不是漢字 | |
| .isIDCard | String |身份證號碼 ||
| .isUrl | String |驗證網址 ||
| .isIPAddr | String |驗證是不是IP地址 | |
| .isOther | String |其他自定義正則驗證 | 需要傳入兩個String,前面的一個是正則,后面的是需要驗證的內容|
所有的驗證返回值都是 `boolean` 類型,驗證通過返回`true`,否則返回`false`
調用也很簡單
```
boolean b = KitVerification.isUrl("sss");
boolean b = KitVerification.isOther("^[a-zA-Z0-9]{6,20}$", "sss");
```
## 反饋交流QQ群:696279396
## 贊助
