Bean Validation 规范内嵌的约束注解定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
约束注解名称 约束注解说明
@Null 验证对象是否为空
@NotNull 验证对象是否为非空
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
@Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值
@DecimalMin 验证 Number 和 String 对象是否大等于指定的值,小数存在精度
@DecimalMax 验证 Number 和 String 对象是否小等于指定的值,小数存在精度
@Size 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Digits 验证 Number 和 String 的构成是否合法
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
querystring接收参数/ POST Form接收参数
这两种合在一起写是因为他们接收的方式都是一样的,可以用多个字段分开接收
- 典型的POST Multi Form 示例
@Validated
@RestController
public class PictureAPIs {
public ApiResult add(@RequestParam("file") MultipartFile file,
@NotNull(message = "xxx不得为空!")
@Size(min = 32, max = 32, message = "必须是32位的字符串")
@RequestParam String gidUnique,
@Pattern(regexp = "^(taobao_picture_upload|taobao_product_img_upload|taobao_item_img_upload|taobao_product_add)$",message = "type可选值:XXX")
@RequestParam("type") String type,
@RequestParam("i") String i) {
}
}
-
@Validated @Validated是最重要的,在每个需要验证控制器参数的 API 上面都需要加上这个注解
-
@RequestParam 这个是很重要的,每个提交的参数都需要加上这个标签
@RequestParam("file")
表示接收 name=file 的参数提交. -
@NotNull 非空验证,这个很常见
-
@Size 字符串长度上下限
-
@Pattern 正则
接收JSON参数
1
2
3
4
5
6
@RequestMapping(value = "/api/picture/add/base64",method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public ApiResult add(
@Validated
@RequestBody PictureAddBase64RequestBody body,
@CookieValue(name = CookieMessageConst.ACCESS_TOKEN_KEY, required = false) String token) {
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PictureAddBase64RequestBody extends PictureAddBaseRequestBody {
private static final long serialVersionUID = 6185318090948651724L;
@NotNull(message = "base64不得为空!")
String base64;
public String getBase64() {
return base64;
}
public void setBase64(String base64) {
this.base64 = base64;
}
}
以这个为例,参数的校验标签放在PictureAddBase64RequestBody的字段上面
其他
- 验证方法
1
2
3
4
5
//验证
public static<T> void validate(T t){
Validator validator = factory.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);
for(ConstraintViolation<T> constraintViolation : constraintViolations) { System.out.println(constraintViolation.getMessage()); } }
参考链接: