diff --git a/common-web/src/main/java/com/baiyue/common/web/GlobalExceptionHandler.java b/common-web/src/main/java/com/baiyue/common/web/GlobalExceptionHandler.java index da926f706..01958f455 100644 --- a/common-web/src/main/java/com/baiyue/common/web/GlobalExceptionHandler.java +++ b/common-web/src/main/java/com/baiyue/common/web/GlobalExceptionHandler.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.resource.NoResourceFoundException; import org.springframework.web.server.ResponseStatusException; import org.springframework.web.multipart.MaxUploadSizeExceededException; +import org.springframework.web.multipart.support.MissingServletRequestPartException; import java.util.LinkedHashMap; import java.util.Map; @@ -66,7 +67,8 @@ public class GlobalExceptionHandler { } @ExceptionHandler({HttpMessageNotReadableException.class, MissingRequestHeaderException.class, - MissingServletRequestParameterException.class, MethodArgumentTypeMismatchException.class}) + MissingServletRequestParameterException.class, MissingServletRequestPartException.class, + MethodArgumentTypeMismatchException.class}) public ResponseEntity> handleBadRequest(Exception exception, HttpServletRequest request) { return failure(ResultCode.BAD_REQUEST, ResultCode.BAD_REQUEST.message(), request); } diff --git a/common-web/src/test/java/com/baiyue/common/web/GlobalExceptionHandlerTest.java b/common-web/src/test/java/com/baiyue/common/web/GlobalExceptionHandlerTest.java index d70a952ba..c1283467e 100644 --- a/common-web/src/test/java/com/baiyue/common/web/GlobalExceptionHandlerTest.java +++ b/common-web/src/test/java/com/baiyue/common/web/GlobalExceptionHandlerTest.java @@ -18,6 +18,7 @@ import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; import org.springframework.dao.CannotAcquireLockException; import org.springframework.web.multipart.MaxUploadSizeExceededException; +import org.springframework.web.multipart.support.MissingServletRequestPartException; import java.lang.reflect.Method; @@ -65,6 +66,17 @@ class GlobalExceptionHandlerTest { assertThat(response.getBody().code()).isEqualTo(ResultCode.BAD_REQUEST.code()); } + @Test + void missingRequiredMultipartPartMapsToBadRequest() { + MockHttpServletRequest request = new MockHttpServletRequest(); + + var response = handler.handleBadRequest( + new MissingServletRequestPartException("file"), request); + + assertThat(response.getStatusCode().value()).isEqualTo(200); + assertThat(response.getBody().code()).isEqualTo(ResultCode.BAD_REQUEST.code()); + } + @Test void validationDetailsAreIncludedInMessageAndData() { MockHttpServletRequest request = new MockHttpServletRequest();