一盒件、引入依賴
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.2.Final</version>
</dependency>
二桌肴、javaBean上設(shè)置校驗(yàn)規(guī)則
@Data
@AllArgsConstructor
public class Student {
@NotNull(message = "id不能為空")
private Integer id;
@NotNull(message = "姓名不能為空")
private String name;
@NotNull(message = "年齡不能為空")
private Integer age;
}
三、Controller層返回校驗(yàn)錯(cuò)誤信息
將不符合校驗(yàn)規(guī)則的字段錯(cuò)誤信息色鸳,統(tǒng)一返回到前臺(tái)
@RestController
public class StudentController {
@RequestMapping("/student")
public String student(@Validated Student student, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> allErrors = bindingResult.getAllErrors();
StringBuffer stringBuffer = new StringBuffer();
for (ObjectError error : allErrors) {
System.out.println(error.getDefaultMessage());
stringBuffer.append(error.getDefaultMessage() + ";");
}
return stringBuffer.toString();
}
return student.toString();
}
}
四、利用切面實(shí)現(xiàn)全局異常處理
使用全局異常處理之后,在JavaBean上增加異常判斷注解之后管削,只需要在Controller方法里增加@Valid即可
- BindExceptionGlobalExceptionHandler
@ControllerAdvice
public class BindExceptionGlobalExceptionHandler {
@ResponseBody
@ExceptionHandler(BindException.class)
public ResultBean validationErrorHandler(BindException e) throws JsonProcessingException {
//1.此處先獲取BindingResult
BindingResult bindingResult = e.getBindingResult();
//2.獲取錯(cuò)誤信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
System.out.println(allErrors);
//3.組裝異常信息
StringBuffer stringBuffer = new StringBuffer();
for (ObjectError error : allErrors) {
stringBuffer.append(error.getDefaultMessage() + ";");
}
//5.返回錯(cuò)誤信息
return new ResultBean(stringBuffer.toString(), 400);
}
}
- ResultBean
@Data
public class ResultBean {
private String msg;
private Integer code;
public ResultBean(String msg, Integer code) {
this.msg = msg;
this.code = code;
}
public static ResultBean success(String msg, Integer code) {
ResultBean jsonData = new ResultBean(msg, code);
jsonData.msg = msg;
return jsonData;
}
}
五彪置、常用校驗(yàn)規(guī)則
JSR提供的標(biāo)準(zhǔ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è)過去的日期
@Future 被注釋的元素必須是一個(gè)將來的日期
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達(dá)式Hibernate Validator提供的校驗(yàn)注解
@NotBlank(message =) 驗(yàn)證字符串非null统倒,且長(zhǎng)度必須大于0
@Email 被注釋的元素必須是電子郵箱地址
@Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
@NotEmpty 被注釋的字符串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi)