Controller:参数添加@Valid注解,保证实体属性校验生效
@RestController
@RequestMapping("/product")
public class ProductController {
@RequestMapping("/save")
public Map<String, String> save(@Valid @RequestBody Product product){
//业务逻辑
return Maps.newHashMap();
}
}
entity:属性添加校验注解(@NotNull、@NotEmpty、@NotBlank等)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Product {
@NotBlank(message = "商品名称必须填写")
@ApiModelProperty("商品名称")
private String name;
@Min(value = 1,message = "商品数量不能小于1")
@ApiModelProperty("商品数量")
private Long num;
}
handler :统一异常处理拦截器
@ExceptionHandler value属性填写具体拦截处理的异常及其子类
@Slf4j
@RestControllerAdvice
public class GlobalExceptionControllerAdvice {
/**
* 全局数据教研异常处理
* @param e
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public Map<String, String> handleValidException(MethodArgumentNotValidException e){
BindingResult bindingResult = e.getBindingResult();
Map<String, String> errorMap = Maps.newHashMap();
bindingResult.getFieldErrors().forEach(fieldError -> errorMap.put(fieldError.getField(),fieldError.getDefaultMessage()));
return errorMap;
}
}