5.JRS303校验

在填写表单时,前后端都要进行校验,前端往往是对非空、是否满足正则表达式进行校验

 

这里主要讲讲后端的校验注解JRS303:

1.一般校验注解都在这个包下

 

普通校验:

2.校验注解放在2个地方:

i)controller的传参入口处(保存和修改接口)加@Valid

 

ii)Entity类对象的具体属性名上:

message可以自定义错误信息,否则就是源代码中的默认错误信息

 

启动后,若不满足填写要求,会有相应的响应信息:

 

3.以上的信息形式不是我们需要的形式,要变为R里面的json形式:

则在controller的参数里加入BindingResult参数,可以截获出现错误时的错误信息

缺点:这样就得在每一个controller需要的接口里都填写这样的代码,造成代码冗余

需要使用统一校验注解配置

 

5.统一校验:

1)创建一个Exception包,在里面创建一个java类:

i)@RestControllerAdvice就相当于被注掉的后面两个灰色的注解

ii)@ExceptionHandler是分配错误的校验类型

iii)这里BindingResult仍然派上了用场

iv)后面的BizCodeEnume是自定义配置的类,错误信息有:

 

该java类中还有一个错误捕捉方法,用于不符合精准匹配捕捉错误方法的错误:

 

2)没有BindingResult

 

6.分组校验

1)先来解释一下各种校验注解:

i)@NotNull、@NotEmpty、@NotBlank的区别:

@NotNull可以配在所有类型上

@NotEmpty只能配置在

@NotBlank表示必须有一个非“空格”字符,而@NotNull可以有空格字符

 

ii)@Pattern:字符校验码,regexp表示正则表达式

 

iii)@URL:

 

2)给各个校验注解分组:

valid变为validated,且没有BindingResult

改Entity属性名上的校验注解所属组

showStatus属性名多一个

 

特殊情况:

默认没有指定分组的校验注解如:@NotBlank,在分组校验情况下(@Validated({AddGroup.class}))不生效

 

7.自定义校验注解

要引入包:

 

 

参照校验注解的源码自定义了一个校验注解类:

 

成功校验:(使用Postman测试接口)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值