# validateTools **Repository Path**: moresir/validate-tools ## Basic Information - **Project Name**: validateTools - **Description**: 借鉴 laravel 的 validation 组件,以 key、value 格式形式的数据校验工具。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-12 - **Last Updated**: 2022-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 使用方法 - 校验方法在 Validator.java, 调用入口在 FCheck.java 配置: 配置加载在:rules/DefaultRules 校验规则在:rules/list/xxx 1、语法规则: - 基本用法:借鉴 laravel 的 validation 组件,以 key、value 格式对应 待校验字段名、校验规则。以 | 分隔不同的规则,以 : 分隔规则名与规则参数 - 可为空: optional, 如:"optional|int", 若字段为空,则不校验;若不为空,则校验是否为 int - 规则携带参数: - 部分规则携带一个参数,直接用 : 分隔,如最小值: "count":"min:1" - 部分规则需携带多个参数,参数内容必须用圆括号包裹, 如范围类:in, 例子: "sex":"in|(1,2)" - 占位符: 以 {# 开头, 以 #} 结尾, 如:{#infoFlag#}, 将会被替换为:Y,N - 占位符配置: 枚举类:config/ReplaceConstantEnum 方法一: - 校验 list - 首先校验 list 不为空: "personList" : "validList" - 其次校验 list 的每一个字对象: "personList::field" : {"personName":"valid"} - 校验 子对象(采用foreach循环的方式) - 首先校验 carPaymentList 是对象:"carPaymentList":"validObject" - 其次校验 carPaymentList 对象的属性: "carPaymentList::field":{"stage":"int"} 方法二(推荐使用): - 校验 list - field.\*.subField1: eg: "personList.\*.personName":"valid" - 校验 子对象 方法二: - field.subField1: eg: "personList.num":"numeric|min:0" 2、已知缺陷: - 方法一 - 暂不支持复杂的关系逻辑校验:如 require_with,required_without - 异常错误信息,不能表示具体字段所在层级,如:carPaymentList.list.stage 为空,仅能显示 stage 为空 - 方法二 - 暂时不支持校验规则中含有 * . 等占位符 - 暂时不支持复杂的关系逻辑校验:如 require_with,required_without ------------------------------------------------------- ## 方法二示例: ``` String rules = "{ "partTypeCode": "in:({#partTypeCode#})", "personName": "valid", "personIdType": "optional|numeric", "personIdNo": "optional|valid", "sex": "optional|in:({#sex#})", "birthDate": "optional|dateFormat:Y-m-d", "carPaymentList.stage":"numeric", "carPaymentList.list.*.paymentPremiumTimes":"numeric", "carPaymentList.list.*.actualPremium":"valid" }"; JSONObject dataJSONObject = (JSONObject) JSON.toJSON(Object对象); goFCheck(dataJSONObject, rules); ``` ------------------------------------------------------- ## 方法一示例: 例子一: 普通 ``` FCheck.getInstance().test().field("userName", "张三").rule("userName", "valid", true).build(); ``` 例子二: list ``` rule = "{ "personNum": "numeric", "personList": "validList", "personList::field": { "personName": "valid", "personIdType": "numeric", "personIdNo": "valid", "age": "optional|numeric", "sex": "optional|in:(1,2)", "birthDate": "optional|dateFormat:yyyy-MM-dd", "isHaveSocial": "optional|in:({#isHaveSocial#})" } }"; JSONObject dataJSONObject = (JSONObject) JSON.toJSON(personInfoDTO); checkJSONObjectData(dataJSONObject, rule); ``` 例子三:子对象 ``` { "id":"valid", "carPaymentList::field":{ "stage":"int", "list":"validList", "list::field":{ "actualPremium":"double", "paymentPremiumTimes":"numeric", "paymentDate":"valid|numeric" } } } ``` #### 说明: 1. 此项目基于开源项目进行修改适配,借鉴项目:https://github.com/alexisvisco/validator