12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package com.rongwei.zhsw.config;
- import com.rongwei.rwcommon.base.R;
- import com.rongwei.zhsw.system.controller.SwMonthlyMeterReadingRecordController;
- import org.springframework.stereotype.Component;
- import org.springframework.validation.FieldError;
- import org.springframework.web.bind.MethodArgumentNotValidException;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.bind.annotation.RestControllerAdvice;
- import javax.validation.ConstraintViolation;
- import javax.validation.ConstraintViolationException;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.stream.Collectors;
- @Component("globalExceptionHandler1") // 指定 Bean 名称
- @RestControllerAdvice(basePackages="com.rongwei.zhsw.system.controller",assignableTypes = {SwMonthlyMeterReadingRecordController.class})
- public class GlobalExceptionHandler {
- /**
- * 处理所有 @Valid 参数校验失败异常
- */
- @ExceptionHandler(MethodArgumentNotValidException.class)
- public R handleValidationException(MethodArgumentNotValidException ex) {
- Map<String, String> errors = new HashMap<>();
- ex.getBindingResult().getAllErrors().forEach(error -> {
- String fieldName = ((FieldError) error).getField();
- String message = error.getDefaultMessage();
- errors.put(fieldName, message);
- });
- return R.error("400", "参数校验失败").putData( errors);
- }
- /**
- * 处理List校验异常(新增)
- */
- @ExceptionHandler(ConstraintViolationException.class)
- public R handleConstraintViolation(ConstraintViolationException ex) {
- Map<String, String> errors = ex.getConstraintViolations()
- .stream()
- .collect(Collectors.toMap(
- v -> v.getPropertyPath().toString(),
- ConstraintViolation::getMessage
- ));
- return R.error("400", "列表参数校验失败").putData(errors);
- }
- /**
- * 兜底异常处理
- */
- @ExceptionHandler(Exception.class)
- public R handleException(Exception ex) {
- return R.error("服务器异常,请联系管理员!");
- }
- }
|