diff --git a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java index b95022a7..2990b5eb 100644 --- a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java +++ b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java @@ -21,6 +21,7 @@ import cn.hutool.core.text.CharSequenceUtil; import com.fasterxml.jackson.databind.exc.InvalidFormatException; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.http.converter.HttpMessageNotReadableException; @@ -32,13 +33,13 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.multipart.MultipartException; import org.springframework.web.servlet.NoHandlerFoundException; +import top.continew.starter.core.constant.StringConstants; import top.continew.starter.core.exception.BadRequestException; import top.continew.starter.core.exception.BaseException; import top.continew.starter.core.exception.BusinessException; -import top.continew.starter.core.util.ExceptionUtils; import top.continew.starter.web.model.R; -import java.util.Objects; +import org.springframework.validation.BindException; /** * 全局异常处理器 @@ -96,16 +97,19 @@ public class GlobalExceptionHandler { } /** - * 方法参数无效异常 + * 参数校验不通过异常 *
* {@code @NotBlank}、{@code @NotNull} 等参数验证不通过 *
*/ - @ExceptionHandler(MethodArgumentNotValidException.class) - public R handleMethodArgumentNotValidException(MethodArgumentNotValidException e, HttpServletRequest request) { + @ExceptionHandler({BindException.class, MethodArgumentNotValidException.class}) + public R handleBindException(BindException e, HttpServletRequest request) { log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e); - String errorMsg = ExceptionUtils.exToNull(() -> Objects.requireNonNull(e.getBindingResult().getFieldError()) - .getDefaultMessage()); + String errorMsg = e.getFieldErrors() + .stream() + .findFirst() + .map(DefaultMessageSourceResolvable::getDefaultMessage) + .orElse(StringConstants.EMPTY); return R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), errorMsg); } diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/NoticeController.java b/continew-system/src/main/java/top/continew/admin/system/controller/NoticeController.java index e528d57e..11ad4fb9 100644 --- a/continew-system/src/main/java/top/continew/admin/system/controller/NoticeController.java +++ b/continew-system/src/main/java/top/continew/admin/system/controller/NoticeController.java @@ -21,7 +21,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.RestController; import top.continew.admin.common.base.controller.BaseController; import top.continew.admin.system.enums.NoticeMethodEnum; -import top.continew.admin.system.enums.NoticeScopeEnum; import top.continew.admin.system.model.query.NoticeQuery; import top.continew.admin.system.model.req.NoticeReq; import top.continew.admin.system.model.resp.notice.NoticeDetailResp; @@ -55,10 +54,6 @@ public class NoticeController extends BaseController