引入pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
編寫代碼
控制層
@PostMapping("login")
public R login(@RequestBody @Validated LoginDTO loginDTO){
return new R(1,loginDTO,"success");
}
傳輸層
@Data
public class LoginDTO {
@NotBlank(message = "不能為空")
private String name;
private String pwd;
@NotNull
private String tel;
private String email;
}
異常捕獲返回給前端
@ExceptionHandler(value = MethodArgumentNotValidException.class)
@ResponseBody
public R handleBindException(MethodArgumentNotValidException e) throws BindException {
R r = new R(401,null,e.getMessage());
log.info("BindException", e);
return r;
}
其他校驗(yàn)
@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@AssertTrue 被注釋的元素必須為 true
@AssertFalse 被注釋的元素必須為 false
@Min(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
@Max(value) 被注釋的元素必須是一個(gè)數(shù)字氓仲,其值必須小于等于指定的最大值
@DecimalMin(value) 被注釋的元素必須是一個(gè)數(shù)字水慨,其值必須大于等于指定的最小值
@DecimalMax(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
@Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內(nèi)
@Digits (integer, fraction) 被注釋的元素必須是一個(gè)數(shù)字敬扛,其值必須在可接受的范圍內(nèi)
@Past 被注釋的元素必須是一個(gè)過(guò)去的日期
@Future 被注釋的元素必須是一個(gè)將來(lái)的日期
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達(dá)式
Hibernate Validator提供的校驗(yàn)注解:
@NotBlank(message =) 驗(yàn)證字符串非null晰洒,且trim后長(zhǎng)度必須大于0
@Email 被注釋的元素必須是電子郵箱地址
@Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
@NotEmpty 被注釋的字符串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi)
Git完整代碼
https://gitee.com/ethanlab/validation
官方文檔
https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/