使用javax.validation.constraints包的注解实现校验
第一种方式
一、添加maven依赖包
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
二、在校验字段上添加校验注解
class Profile{
@NotNull(message = "字段值不能为空")
private String name;
@NotNull
private String sex;
@Max(value = 20,message = "最大长度为20")//可以为空,不能为空需加上 @NotNull
private String address;
@NotNull
@Size(max=10,min=5,message = "字段长度要在5-10之间")
private String fileName;
@Pattern(regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$",message = "不满足邮箱正则表达式")
private String email;
@AssertTrue(message = "字段为true才能通过")
private boolean isSave;
@Future(message = "时间在当前时间之后才可以通过")
private Date date;
//----------------------------------------------------------------------------------------
JSR提供的校验注解:
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null,不能为 null , 可以为 ""
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
Hibernate Validator提供的校验注解:
@NotBlank(message =) 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空,不能为 null、"",可以为 " "
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
}
三、在Controller层使用@Validated进行验证
@RequestMapping("file/upload")
public void upload(@RequestPart("files") MultipartFile files, @Validated Profile profile, Errors error) throws IOException {
if(error.hasErrors()){
return;
}
files.transferTo(new File(files.getOriginalFilename()));保存文件
}
第二种方式
通过分组,自定义参数校验(不同位置,校验不同参数)
实体
添加分组接口
controller使用
原文链接:https://blog.csdn.net/lovequanquqn/article/details/82725258