# 注意:本文档后期不在跟新,新文档迁移到:[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
## 赞助
![](https://box.kancloud.cn/bf6f9c0e4f5a786c20d02c56b56a0eaf_600x500.png)