自定义的文案
version:>=1.5.0
errMsg是用于在当前的数据被拦截之后的输出,比如刚开始的介绍案例,如果
@Data@Accessors(chain = true)public class WhiteAEntity {// 修饰属性name,只允许对应的值为a,b,c和null@Matcher(value = {"a","b","c","null"}, errMsg = "输入的值不符合需求")private String name;private String address;}
在拦截的位置添加核查,这里是做一层核查,在业务代码中建议封装到aop中对业务使用方不可见即可实现拦截
import lombok.SneakyThrows;@Test@SneakyThrowspublic void test1(){WhiteAEntity whiteAEntity = new WhiteAEntity();whiteAEntity.setName("d");// 可以使用带有返回值的核查if (!MkValidators.check(whiteAEntity)) {// 输出:数据校验失败-->属性 name 的值 d 不在只可用列表 [null, a, b, c] 中-->类型 WhiteAEntity 核查失败System.out.println(MkValidators.getErrMsgChain());// 输出:输入的值不符合需求System.out.println(MkValidators.getErrMsg());}// 或者 可以采用抛异常的核查,该api为 MkValidators.check 的带有异常的检测方式MkValidators.validate(whiteAEntity);}
采用系统生成的文案
version:>=1.0.0
如果我没不写errMsg,如下这种,那么返回值为系统默认的错误信息,比如
@Data@Accessors(chain = true)public class WhiteAEntity {// 修饰属性name,只允许对应的值为a,b,c和null@Matcher(value = {"a","b","c","null"})private String name;private String address;}
执行结果
import lombok.SneakyThrows;@Test@SneakyThrowspublic void test1(){WhiteAEntity whiteAEntity = new WhiteAEntity();whiteAEntity.setName("d");// 可以使用带有返回值的核查if (!MkValidators.check(whiteAEntity)) {// 输出:数据校验失败-->属性 name 的值 d 不在只可用列表 [null, a, b, c] 中-->类型 WhiteAEntity 核查失败System.out.println(MkValidators.getErrMsgChain());// 输出:属性 name 的值 d 不在只可用列表 [null, a, b, c] 中System.out.println(MkValidators.getErrMsg());}// 或者 可以采用抛异常的核查,该api为 MkValidators.check 的带有异常的检测方式MkValidators.validate(whiteAEntity);}
errMsg中添加属性的值
version:>=1.6.0
自定义文案中如果要显示我们修饰的属性的值,那么可以采用变量#current即可
@Data
@Accessors(chain = true)
public class ErrMsgEntity3 {
@Matcher(value = {"a", "b", "c"}, errMsg = "值#current不符合要求")
private String name;
}
def "提供占位符的要求"() {
given:
ErrMsgEntity3 entity = new ErrMsgEntity3().setName(name)
expect:
def act = MkValidators.check(entity)
if (!act) {
println MkValidators.getErrMsgChain()
println MkValidators.getErrMsg()
}
Assert.assertEquals(result, act)
where:
name | result
"a" | true
"b" | true
"c" | true
"d" | false
}
