1.JSR 303 校验注解
1.给Bean添加校验注解javax.validation.constraints
/**
* 品牌名
*/
@NotBlank(message = "品牌名必须提交")
private String name;
2.开启校验功能 @Valid
/**
* 保存
*/
@RequestMapping("/save")
public R save(@Valid @RequestBody BrandEntity brand){
brandService.save(brand);
return R.ok();
}
3.给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果
/**
* 保存
*/
@RequestMapping("/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);
});
return R.error(400, "提交的数据不合法").put("data", map);
} else {
brandService.save(brand);
}
return R.ok();
}
2.集中处理异常
package com.agegg.gulimall.product.exception;
import com.agegg.common.exception.BizCodeEnum;
import com.agegg.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* 集中处理所有异常
*/
@Slf4j
@RestControllerAdvice(basePackages = "com.agegg.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R handleVaildException(MethodArgumentNotValidException e) {
log.error("数据效验出现问题{},异常类型{}", e.getMessage(), e.getClass());
BindingResult result = e.getBindingResult();
Map<String, String> map = new HashMap<>();
// 获取校验错误结果
result.getFieldErrors().forEach((item) -> {
// 获取错误信息
String message = item.getDefaultMessage();
// 获取字段名
String field = item.getField();
map.put(field, message);
});
return R.error(BizCodeEnum.VAILD_EXCEPTION.getCode(), BizCodeEnum.VAILD_EXCEPTION.getMessage()).put("data", map);
}
@ExceptionHandler(value = Throwable.class)
public R handleException(Throwable throwable) {
log.error("出现问题{},异常类型{}", throwable.getMessage(), throwable.getClass());
return R.error(BizCodeEnum.UNKNOW_EXCEPTION.getCode(), BizCodeEnum.UNKNOW_EXCEPTION.getMessage());
}
}
网友评论