问题:验证字段过多,每次都使用参数去接收错误提示,再返回给前端,导致代码大量冗余
解决:使用@ControllerAdvice 注解做统一的异常处理,对所有验证错误进行捕获,统一返回给前端
import com.google.common.collect.Lists;
import com.pilot.oms.service.common.constant.ResultType;
import com.pilot.oms.service.common.entity.basic.ResponsePageResult;
import com.pilot.oms.service.common.entity.basic.ResponseResult;
import com.pilot.oms.service.common.exception.ReturnPageValuesRuntimeException;
import com.pilot.oms.service.common.exception.ReturnValuesRuntimeException;
import com.pilot.oms.service.common.exception.UnauthorizedRuntimeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.TypeMismatchException;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import javax.validation.ConstraintViolationException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@ControllerAdvice
public class AllControllerAdvice {
private static Logger logger = LoggerFactory.getLogger(AllControllerAdvice.class);
@ResponseBody
@ExceptionHandler(value = Exception.class)
public ResponseResult<?> errorHandler(Exception ex) {
logger.error("接口出现严重异常:{}", ex);
return new ResponseResult<>(ResultType.SYS_SO_BUSY,