5 Star 16 Fork 3

imJovi / Validator

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MIT

vonce-validator(字段验证器)

介绍

一款轻量级的字段验证助手,集成方式极其简单并具拓展性,使用它可以减少大量不必要的if判断,使你的业务代码更加简洁优雅。
环境:JDK8+,(Spring MVC 4.1.2+ 或 Spring Boot 1x 或 Spring Boot 2x)

即刻上手

1:如何引入
<dependency>
	<groupId>cn.vonce</groupId>
	<artifactId>vonce-validator</artifactId>
	<version>0.9.6</version>
</dependency>
2:如何配置
//方式一:默认查找所有Controller所在包自动配置,注解:@EnableValidatorAutoConfig
@EnableValidatorAutoConfig
@SpringBootApplication
public class DoerApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoerApiApplication.class, args);
    }
}

//方式二:手动指定表达式,注解:@EnableValidatorAutoConfig
@EnableValidatorAutoConfig(expressions = {"execution(* cn.abc.api.controller..*.*(..))"})
@SpringBootApplication
public class DoerApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoerApiApplication.class, args);
    }
}

//方式三:配置某个Controller,注解:@EnableValidator
@EnableValidator
@RequestMapping("test")
@RestController
public class TestController extends BaseController {

}
3:如何使用
//方式一:
@GetMapping("test")
public RS test(@VNotEmpty("姓名不能为空") String name, @VPhone("手机号码不正确") String phone, @VRangeValue(min = 1, max = 120, value = "年龄范围为1-120")Integer age) {
    return super.successHint("成功");
}

//方式二:
public class User {
    //value=错误提示,不写会有默认提示;group=分组验证配合@VBean注解使用,可以不分组,比如此处则为新增、更新时需要验证;
    @VMinValue(val = 1, value = "id最小从1开始",group = {"user.add","user.update"})
    private Integer id;

    @VChinese(value = "名字必须为中文",group = {"user.add"})
    private String name;

    @VNotEmpty(value = "身份证不能为空",group = {"user.add"})
    private String idCard;

    @VRangeValue(min = 1, max = 120, value = "年龄范围为1-120",group = {"user.add"})
    private Integer age;

    @VBoolean(val = VBoolean.BoolValue.FALSE,group = {"user.add"})
    private boolean vip;

    @VEmail(group = {"user.add"})
    private String email;
    
    //省略get set方法
}
@GetMapping("add")
public RS add(@VBean(group = "user.add") User user) {
    return super.successHint("成功");
}

//方式三:
public static void main(String[] agrs) {
    User user = new User();
    //user.set...
    //省略
    BeanResult beanResult = ValidatorHelper.validBean(user, "user.add", false);
    if (!beanResult.isPass()) {
        for (FieldResult fieldResult : beanResult.getFieldResultList()) {
            System.out.println("返回提示:" + fieldResult.getTips() + ",错误原因:" + fieldResult.getName() + fieldResult.getError());
        }
    } else {
        System.out.println("恭喜!没有错误!");
    }
}
4:如何自定义验证注解
//自定义一个注解:值必须等于1的验证注解:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Documented
@Validate(type = ValidateEqual1.class)//必须,且需指定规则实现
public @interface VEqual1 {

    /**
     * 字段名称
     * @return
     */
    String name() default "";//必须

    /**
     * 是否只有不为空的时候才校验
     * @return
     */
    boolean onlyWhenNotEmpty() default false;//看个人需求,如果需要则只支持String类型校验

    /**
     * 消息提示
     * @return
     */
    String value() default "";//必须

    /**
     * 分组校验
     * @return
     */
    String[] group() default "";//必须
    
    //看个人需求增加方法

}

//自定义一个规则实现:值必须等于1的验证注解的规则实现
public class ValidateEqual1 extends AbstractValidate<VEqual1> {
    @Override
    public WhatType[] type() {
        //指定该注解用于验证什么类型
        return new WhatType[]{WhatType.STRING_TYPE};
    }

    @Override
    public String getAnticipate(VEqual1 valid) {
        //返回你期望的结果(使用时如果没指定错误提示,那么这里返回的内容则为默认错误提示)
        return "只能是1";
    }

    @Override
    public boolean check(VEqual1 valid, FieldInfo fieldInfo) {
        //具体的验证规则
        if(fieldInfo.getValue().equals("1")){
            return true;
        }
        return false;
    }
}
5:注解说明
@Validate     //统一校验注解规范
参数 解释 默认 必须
type 指定规则实现类
@VBean        //校验bean
参数 解释 默认 必须
group 分组检验 ""
interrupt 遇到错误是否继续校验 true
@VBoolean     //校验布尔类型,支持字符、布尔类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 必须是布尔值(包含true和false)或必须是true或必须是false BoolValue.NORMAL
group 分组检验 ""
@VChinese     //校验中文,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
val 校验中文的类型 ChineseType.IS_CHINESE_NOT_HAS_SYMBOL
group 分组检验 ""
@VConsist     //校验是否由指定值构成,支持字符、数值、布尔类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
val 指定值
group 分组检验 ""
@VEmail       //校验邮箱格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VEqualTo     //校验该字段值是否与指定的值一致,支持字符、数值、布尔类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 指定的值 "" val和field二选一
field 指定的字段名,优先级比val高(仅支持bean模式) "" val和field二选一
group 分组检验 ""
@VIDCard      //校验身份证号码格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VIPAddress   //校验IP地址格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VMaxLength   //校验设置的最大长度,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
val 字段最大长度值
group 分组检验 ""
@VMaxValue    //校验设置的最大值,支持字符、数值类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 字段最大值
group 分组检验 ""
@VMinLength   //校验设置的最小长度,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
val 字段最小长度值
group 分组检验 ""
@VMinValue    //校验设置的最小值,支持字符、数值类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 字段最小值
group 分组检验 ""
@VNotEmpty    //校验不能为empty,支持所有类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
group 分组检验 ""
@VNotNull     //校验不能为null,支持所有类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
group 分组检验 ""
@VNumber      //校验数字,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 数值类型或整数或浮点数 VNumber.NumType.NUMBER
group 分组检验 ""
@VPassword    //校验密码格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VPhone       //校验手机或电话格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
phoneType 手机或电话 VPhoneType.MOBILEPHONE
group 分组检验 ""
@VRangeLength //校验长度范围,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
max 字段最大长度值
min 字段最小长度值
group 分组检验 ""
@VRangeValue  //校验值范围,支持字符、数值类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
max 字段最大值
min 字段最小值
group 分组检验 ""
@VRegex       //校验是否符合正则表达式的规则,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
value 消息提示 ""
val 正则表达式
group 分组检验 ""
@VSQLInject   //校验是否存在sql注入,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VUrl         //校验URl格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
@VUserName    //校验用户名格式,支持字符类型校验
参数 解释 默认 必须
name 字段名 ""
onlyWhenNotEmpty 不为空的时候才校验 false
value 消息提示 ""
group 分组检验 ""
MIT License Copyright (c) 2019 Jovilam77 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

一款轻量级的字段验证助手,集成方式极其简单并具拓展性,使用它可以减少大量不必要的if判断,使你的业务代码更加简洁优雅。 expand collapse
Java
MIT
Cancel

Releases (1)

All

Contributors

All

Activities

Load More
can not load any more
Java
1
https://gitee.com/iJovi/vonce-validator.git
git@gitee.com:iJovi/vonce-validator.git
iJovi
vonce-validator
Validator
master

Search