参数校验,只需要用到一个注解即可:@Verification

接受参数的实体类的字段上 加上这个注解即可

  1. // 不可为空,且长度在2-3位
  2. @Verification(notNull = true,maxLength = 3L,minLength = 2L, msg = "id不可为空且长度必须在2-3位之间")
  3. private Integer id;
  4. // 正则校验
  5. @Verification(reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$",msg = "密码不可以为空且必须是6-12位数字字母组合")
  6. private String password;

属性解释

  • notNull:是否为空,设置为true说明不可为空

  • maxLength:最大长度,只有设置了notNull=true 才生效

  • minLength:最小长度,只有设置了notNull=true 才生效

  • msg:校验不通过的时候,返回前端的提示文字

  • reg:正则表达式

注意事项

  • 只支持非空验证,和正则验证,正则可以满足所有的校验规则,所以就只做了这两种
  • reg和notNull属性 最好不要并存,如果并存了,那么reg的优先级高,reg不通过就直接短路,通过了就继续校验非空

前端如何得到提示

正常请求就好了,如果校验不通过会得到这样一个json

  1. {error_code:1128, error_info:"提示文字"}

作用域

在实际开发中,很多VO对象会被作为多个接口的接参对象,这种情况下如果在属性上加@Verification注解,会导致所有用到这个对象的接口,都需要遵循这个校验规则。

但是实际中会出现这种情况:A接口需要这个字段非空,但是B接口又不需要非空。

这个时候,就需要apis属性了,使用方式如下:

  1. @Verification(apis = "/*/deme", notNull = true, msg = "id不可为空")
  2. private Integer id;
  3. @Verification(apis = {"/*/demo", "/*/login*"}, notNull = true, msg = "id不可为空")
  4. private Integer name;
  • 添加这个属性以后,说明只有跟apis属性里的配置相匹配的接口才需要校验
  • 匹配的规则是,用接口的url跟apis属性里的值进行比较的
  • apis属性支持配置多个接口名,同时也支持通配符
  • apis属性如果不配置,则表示任意使用该VO的接口,都遵循这个校验规则