一、导包
<!-- 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 A{
@NotNull(message = "字段值不能为空,Map 和 Array 对象不能是 null, 但可以是空集(size = 0)")
private String name;
@NotEmpty(message = "Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0")
private String name1;
@NotBlank(message = "String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0")
private String name2;
@Max(value = 20,message = "最大长度为20")
private String address;
@NotNull
@Size(max=10,min=5,message = "字段长度要在5-10之间")
private String fileName;
@Pattern(regexp = "正则表达式",message = "不满足正则表达式")
private String email;
@AssertTrue(message = "字段为true才能通过")
private boolean isSave;
@Future(message = "时间在当前时间之后才可以通过")
private Date date;
三、controller层
- 开启校验功能@Valid,校验错误后有默认的响应(框架配置文件中设置)
- 给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果。
- 按需封装自己的返回数据。
@RequestMapping("/save")
//@RequiresPermissions("product:brand:save")
public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
if(result.hasErrors()){
Map<String,String> map = new HashMap<>();
//获取所有错误信息
result.getFieldErrors().forEach((item)->{
//获取单个错误提示
String message = item.getDefaultMessage();
//获取错误属性名
String field = item.getField();
map.put(field,message);
});
R.error(400,"提交的数据不合法").put("data",map);
}else{
//业务处理
brandService.save(brand);
}
return R.ok();
}
四、非空详细介绍
1. @NotNull
对象不是null就行,其他的不保证
2. @NotEmpty
@NotNull
@Size(min = 1)
@NotEmpty除了@NotNull之外还需要保证@Size(min=1),这也是一个注解,这里规定最小长度等于1,也就是类似于集合非空。
3. @NotBlank
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
if ( charSequence == null ) { //curious
return true;
}
return charSequence.toString().trim().length() > 0;
当一个string对象是null时方法返回true,但是当且仅当它的trimmed length等于零时返回false。即使当string是null时该方法返回true,但是由于@NotBlank还包含了@NotNull,所以@NotBlank要求string不为null。
五、常用标签
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) 被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内
网友评论