日常接口中,我们需要校验字符串是否为空等操作,需要在接口中使用StringUtils.isBlank(str)
之类的方法校验,但
是如果过多的字符串,我们需要些大量的校验代码,代码十分臃肿繁琐无味,现在,我们把这项工作交给spring
去做。使用@Valid
去校验。
首先我们使用一个实体类接收接口中传入的参数。
实体类如下:
public class ResultInput {
/**
* 任务Id
*/
@NotEmpty(message = "taskId不能为空")
private String taskId;
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
}
接口中:
@RestController
@RequestMapping("result")
public class ResultController {
@PostMapping("addResult")
public Object addResult(@Valid @RequestBody ResultInput resultInput, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return bindingResult.getFieldError().getDefaultMessage();
}
return "success";
}
}
我们使用BindingResult来接收校验的结果,如果有不合法的参数,从中取出结果信息,然后返回给前端页面。
以下是注解的说明:
注解 | 说明 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |