值不能为null 参数名datagridviewcolumnstart_SpringMVC中如何校验参数?

Java校验API

今天和大家分享一下如何在SpringMVC中校验参数。首先大家要知道的就是java校验API,即java Validation API,又称为JSR-303。从Spring3.0版本开始,SpringMVC就提供了对java校验API的支持,要在SpringMVC中使用java校验API的话只需要在类路径下包含java校验API的实现就好了,比如Hibernate Validator。

java校验API定义了多个注解,这些注解直接在所需要校验的属性上使用就可以了,这些注解都在javax.validation.constraints包中,我们一起来看一下这些注解。

477b584b87362e41917e6ff773fecc38.png

校验注解

我们今天使用SpringBoot的2.2.1.RELEASE进行测试。

如何开启校验

要开启校验仅仅需要2步:1.在需要校验的字段上添加上注解;2.在SpringMVC的路径方法的需要校验的参数上添加@Valid注解,如图:

4bbb00710827d2dbc42c65db28d9e738.png

@NotNull注解

fd30af26677b916530638ab97ac2757a.png

@Valid添加校验

获取校验的错误

获取校验的错误需要在Valid注解的后面添加Errors参数就可以了,记得Errors参数要添加在校验参数的后面才可以。如图:

075e1ef9ffd71626d5580597f3cf15a1.png

Errors

图中通过hasErrors判断是否存在参数错误,通过getFieldErrors返回错误的信息。

校验注解

@AssertFalse:

所注解的元素必须是Boolean类型,并且值为false

@AssertTrue:

所注解的元素必须是Boolean类型,并且值为true

@DecimalMax:

所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值

@DecimalMin:

所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值

@Digits:

所注解的元素必须是数字,并且它的值必须有指定的位数

@Email:

所注解的元素要匹配指定的正则表达式

@Max:

所注解的元素必须是数字,并且值要小于或等于给定的值。注意如果@Max所注解的元素是null,则@Max注解会返回true,所以应该把@Max注解和@NotNull注解结合使用。

@Min:

所注解的元素必须是数字,并且值要大于或等于给定的值。注意如果@Min所注解的元素是null,则@Min注解会返回true,即也会通过校验,所以应该把@Min注解和@NotNull注解结合使用。

@NotBlank:

所注解的元素不能为null且不能为空白,用于校验CharSequence(含String、StringBuilder和StringBuffer)

@NotEmpty:

所注解的元素不能为null且长度大于0,可以是空白,用于校验CharSequence、数组、Collection和Map

@NotNull:

所注解的元素不能为null

@Null:

所注解的元素必须为null

@Pattern:

所注解的元素必须匹配指定的正则表达式。注意如果@Pattern所注解的元素是null,则@Pattern注解会返回true,即也会通过校验,所以应该把@Pattern注解和@NotNull注解结合使用。

@Size:

所注解的元素必须符合指定的大小,该注解可用于数组,CharSequence(含String、StringBuilder和StringBuffer),Collection和Map。注意如果@Size所注解的元素是null,则@Size注解会返回true,即也会通过校验,所以应该把@Size注解和@NotNull注解结合使用。

ConstraintValidator实现类

最后和大家提一下,hibernate-validator的校验实现位于org.hibernate.validator.internal.constraintvalidators包下,校验的实现类都实现了ConstraintValidator接口,具体如下图所示。感兴趣的小伙伴可以通过源码看看hibernate-validator的具体校验逻辑。

43e650599a398c58d2fc14fe0ba552d8.png

ConstraintValidator的实现类

举几个例子:

@NotBlank的校验源码:

e15fd215ff8fab5407ccfc146a4dfba9.png

NotBlankValidator

@Size对于数组的校验源码:

8ed41a944a7aedbbae82d7eb2ba5f09a.png

SizeValidatorForArray

@NotEmpty对于Collection的校验源码:

bcab60fcb6c638791ab6c5281702924f.png

NotEmptyValidatorForCollection

结束

今天简单和大家介绍了如何在SpringMVC中校验参数,可以说SpringMVC大大简化了我们在参数检验上的工作量,这也正是框架带来的好处。

好啦,希望今天的文章能帮助到大家,小伙伴们如果有什么疑问可以在评论区留言哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值