MrBird пре 6 година
родитељ
комит
189dbc8e0b

+ 19 - 0
febs-common/src/main/java/cc/mrbird/febs/common/handler/BaseExceptionHandler.java

@@ -11,6 +11,7 @@ import org.springframework.validation.BindException;
 import org.springframework.validation.FieldError;
 import org.springframework.web.HttpMediaTypeNotSupportedException;
 import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
@@ -78,6 +79,24 @@ public class BaseExceptionHandler {
         return new FebsResponse().message(message.toString());
     }
 
+    /**
+     * 统一处理请求参数校验(json)
+     *
+     * @param e ConstraintViolationException
+     * @return FebsResponse
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    @ResponseStatus(HttpStatus.BAD_REQUEST)
+    public FebsResponse handlerMethodArgumentNotValidException(MethodArgumentNotValidException e) {
+        StringBuilder message = new StringBuilder();
+        for (FieldError error : e.getBindingResult().getFieldErrors()) {
+            message.append(error.getField()).append(error.getDefaultMessage()).append(",");
+        }
+        message = new StringBuilder(message.substring(0, message.length() - 1));
+        log.error(message.toString(), e);
+        return new FebsResponse().message(message.toString());
+    }
+
     @ExceptionHandler(value = FileDownloadException.class)
     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
     public void handleFileDownloadException(FileDownloadException e) {