自定义的文案

version:>=1.5.0
errMsg是用于在当前的数据被拦截之后的输出,比如刚开始的介绍案例,如果

  1. @Data
  2. @Accessors(chain = true)
  3. public class WhiteAEntity {
  4. // 修饰属性name,只允许对应的值为a,b,c和null
  5. @Matcher(value = {"a","b","c","null"}, errMsg = "输入的值不符合需求")
  6. private String name;
  7. private String address;
  8. }

在拦截的位置添加核查,这里是做一层核查,在业务代码中建议封装到aop中对业务使用方不可见即可实现拦截

  1. import lombok.SneakyThrows;
  2. @Test
  3. @SneakyThrows
  4. public void test1(){
  5. WhiteAEntity whiteAEntity = new WhiteAEntity();
  6. whiteAEntity.setName("d");
  7. // 可以使用带有返回值的核查
  8. if (!MkValidators.check(whiteAEntity)) {
  9. // 输出:数据校验失败-->属性 name 的值 d 不在只可用列表 [null, a, b, c] 中-->类型 WhiteAEntity 核查失败
  10. System.out.println(MkValidators.getErrMsgChain());
  11. // 输出:输入的值不符合需求
  12. System.out.println(MkValidators.getErrMsg());
  13. }
  14. // 或者 可以采用抛异常的核查,该api为 MkValidators.check 的带有异常的检测方式
  15. MkValidators.validate(whiteAEntity);
  16. }


采用系统生成的文案

version:>=1.0.0
如果我没不写errMsg,如下这种,那么返回值为系统默认的错误信息,比如

  1. @Data
  2. @Accessors(chain = true)
  3. public class WhiteAEntity {
  4. // 修饰属性name,只允许对应的值为a,b,c和null
  5. @Matcher(value = {"a","b","c","null"})
  6. private String name;
  7. private String address;
  8. }

执行结果

  1. import lombok.SneakyThrows;
  2. @Test
  3. @SneakyThrows
  4. public void test1(){
  5. WhiteAEntity whiteAEntity = new WhiteAEntity();
  6. whiteAEntity.setName("d");
  7. // 可以使用带有返回值的核查
  8. if (!MkValidators.check(whiteAEntity)) {
  9. // 输出:数据校验失败-->属性 name 的值 d 不在只可用列表 [null, a, b, c] 中-->类型 WhiteAEntity 核查失败
  10. System.out.println(MkValidators.getErrMsgChain());
  11. // 输出:属性 name 的值 d 不在只可用列表 [null, a, b, c] 中
  12. System.out.println(MkValidators.getErrMsg());
  13. }
  14. // 或者 可以采用抛异常的核查,该api为 MkValidators.check 的带有异常的检测方式
  15. MkValidators.validate(whiteAEntity);
  16. }

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
}