参数校验,只需要用到一个注解即可:@Verification
接受参数的实体类的字段上 加上这个注解即可
// 不可为空,且长度在2-3位
@Verification(notNull = true,maxLength = 3L,minLength = 2L, msg = "id不可为空且长度必须在2-3位之间")
private Integer id;
// 正则校验
@Verification(reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$",msg = "密码不可以为空且必须是6-12位数字字母组合")
private String password;
属性解释
notNull:是否为空,设置为true说明不可为空
maxLength:最大长度,只有设置了notNull=true 才生效
minLength:最小长度,只有设置了notNull=true 才生效
msg:校验不通过的时候,返回前端的提示文字
reg:正则表达式
注意事项
- 只支持非空验证,和正则验证,正则可以满足所有的校验规则,所以就只做了这两种
- reg和notNull属性 最好不要并存,如果并存了,那么reg的优先级高,reg不通过就直接短路,通过了就继续校验非空
前端如何得到提示
正常请求就好了,如果校验不通过会得到这样一个json
{error_code:1128, error_info:"提示文字"}
作用域
在实际开发中,很多VO对象会被作为多个接口的接参对象,这种情况下如果在属性上加@Verification注解,会导致所有用到这个对象的接口,都需要遵循这个校验规则。
但是实际中会出现这种情况:A接口需要这个字段非空,但是B接口又不需要非空。
这个时候,就需要apis属性了,使用方式如下:
@Verification(apis = "/*/deme", notNull = true, msg = "id不可为空")
private Integer id;
@Verification(apis = {"/*/demo", "/*/login*"}, notNull = true, msg = "id不可为空")
private Integer name;
- 添加这个属性以后,说明只有跟apis属性里的配置相匹配的接口才需要校验
- 匹配的规则是,用接口的url跟apis属性里的值进行比较的
- apis属性支持配置多个接口名,同时也支持通配符
- apis属性如果不配置,则表示任意使用该VO的接口,都遵循这个校验规则