Spring MVC全域性異常處理器
阿新 • • 發佈:2020-12-08
@RestControllerAdvice public class GlobalExceptionHandler { /** * 前端請求的資料為json型別,後臺校驗失敗,出現的異常 * org.springframework.web.bind.MethodArgumentNotValidException */ @ExceptionHandler(value = {MethodArgumentNotValidException.class}) public AjaxResult jsonErrorHandler(MethodArgumentNotValidException e) { return getAjaxResult(e.getBindingResult()); } /** * 前端請求的資料為表單物件,後臺校驗失敗,出現的異常 * org.springframework.validation.BindException */ @ExceptionHandler(value = {BindException.class}) public AjaxResult bindException(BindException e) { return getAjaxResult(e.getBindingResult()); } /** * 獲得異常資訊 * @param bindingResult * @return */ private AjaxResult getAjaxResult(BindingResult bindingResult) { List<ObjectError> allErrors = bindingResult.getAllErrors(); List<Map<String, Object>> messages = new ArrayList<>(allErrors.size()); for (ObjectError allError : allErrors) { Map<String, Object> map = new HashMap<>(); FieldError error = (FieldError) allError; map.put("objectName", error.getObjectName()); map.put("defaultMessage", error.getDefaultMessage()); map.put("field", error.getField()); messages.add(map); } return AjaxResult.fail("後端資料校驗異常", messages); } }