浏览代码

新增全局异常类(参数)

tsurumure 10 月之前
父节点
当前提交
39ca6bac8f

+ 14 - 0
src/main/java/com/backendsys/exception/GlobalExceptionHandler.java

@@ -19,8 +19,10 @@ import org.springframework.http.server.ServerHttpRequest;
 import org.springframework.http.server.ServerHttpResponse;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
 import org.springframework.web.HttpRequestMethodNotSupportedException;
 import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.servlet.NoHandlerFoundException;
@@ -28,6 +30,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
 import javax.security.auth.login.LoginException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * https://juejin.cn/post/6844903902811275278
@@ -108,6 +111,17 @@ public class GlobalExceptionHandler implements ResponseBodyAdvice<Object> {
         );
     }
 
+    @ExceptionHandler(MissingServletRequestParameterException.class)
+    public Result handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {
+        System.out.println("****** MissingServletRequestParameterException.class: ******");
+        System.out.println(e.getMessage());
+        return Result.error(
+            ResultEnum.PARAMETER_EXCEPTION.getCode(),
+            "缺少参数 " + e.getParameterName() + " 或类型不匹配 (" + e.getParameterType() + ")",
+            e.getMessage()
+        );
+    }
+
 
 
     /**

+ 5 - 1
src/main/java/com/backendsys/modules/log/controller/LogStreamController.java

@@ -5,10 +5,13 @@ import com.backendsys.modules.common.config.security.annotations.Anonymous;
 import com.backendsys.modules.log.emitter.LogStreamEmitterManager;
 import com.backendsys.modules.log.utils.LogStreamUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
+import javax.validation.constraints.NotNull;
 import java.io.IOException;
 
 @RestController
@@ -22,7 +25,8 @@ public class LogStreamController {
      */
     @Anonymous
     @GetMapping(value = "/api/log/stream/watch", produces = "text/event-stream")
-    public SseEmitter stream() {
+    public SseEmitter stream(@RequestParam @NotNull(message = "v 不能为空") String v) {
+
         String userId = Convert.toStr(1L);
         SseEmitter emitter = new SseEmitter(Long.MAX_VALUE);
         LogStreamEmitterManager manager = LogStreamEmitterManager.getInstance();