<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      spring-boot-starter-validation數據校驗全局異常攔截處理(轉發)

      原版參考:https://blog.csdn.net/tangyb828/article/details/126884417

      特殊備注:簡要整理筆記,非原著

      一、引用Maven

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-validation</artifactId>
      </dependency>

      二、使用攔截方式:

      1、BindingResult對象接受和處理異常;
          @PostMapping("/taxinfoSearch")
          public Object taxinfoSearch(@Validated @RequestBody TaxRequestOrgInfo request, BindingResult bindingResult){
              if (bindingResult.hasErrors()) {
                  String messages = bindingResult.getAllErrors()
                          .stream()
                          .map(ObjectError::getDefaultMessage)
                          .reduce((m1, m2) -> m1 + "" + m2)
                          .orElse("參數輸入有誤!");
                  return TaxOutResponse.loadResponseMsg(messages);
              }
              return orgInfoService.orgTaxInfoSearch(request).get(AjaxResult.DATA_TAG);
          }

       2、異常類攔截:

      package dbgo.aei.qdtax;
      
      import dbgo.aei.common.core.model.TaxOutResponse;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.core.annotation.Order;
      import org.springframework.http.HttpStatus;
      import org.springframework.validation.BindException;
      import org.springframework.web.bind.MethodArgumentNotValidException;
      import org.springframework.web.bind.annotation.ExceptionHandler;
      import org.springframework.web.bind.annotation.ResponseStatus;
      import org.springframework.web.bind.annotation.RestControllerAdvice;
      
      import javax.validation.ConstraintViolation;
      import javax.validation.ConstraintViolationException;
      import java.util.stream.Collectors;
      
      /**
       * Description  validation攔截器
       * Author justin.jia
       * Date 2023/5/15 9:58
       **/
      @Order(80)
      @RestControllerAdvice
      public class ValidationExceptionHandle {
          //日志文件
          public Logger logger = LoggerFactory.getLogger(this.getClass());
      
          /**
           * BindException異常處理
           * <p>BindException: 作用于@Validated @Valid 注解,僅對于表單提交有效,對于以json格式提交將會失效</p>
           *
           * @param e BindException異常信息
           * @return 響應數據
           */
          @ResponseStatus(HttpStatus.BAD_REQUEST)
          @ExceptionHandler(BindException.class)
          public TaxOutResponse bindExceptionHandler(BindException e) {
              String msg = e.getBindingResult().getFieldErrors()
                      .stream()
                      .map(n -> String.format("%s: %s", n.getField(), n.getDefaultMessage()))
                      .reduce((x, y) -> String.format("%s; %s", x, y))
                      .orElse("參數輸入有誤");
      
              logger.error("BindException異常,參數校驗異常:{}", msg);
              return TaxOutResponse.loadResponseMsg(msg);
          }
      
          /**
           * MethodArgumentNotValidException-Spring封裝的參數驗證異常處理
           * <p>MethodArgumentNotValidException:作用于 @Validated @Valid 注解,接收參數加上@RequestBody注解(json格式)才會有這種異常。</p>
           *
           * @param e MethodArgumentNotValidException異常信息
           * @return 響應數據
           */
          @ResponseStatus(HttpStatus.BAD_REQUEST)
          @ExceptionHandler(value = MethodArgumentNotValidException.class)
          public TaxOutResponse methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
              String msg = e.getBindingResult().getFieldErrors()
                      .stream()
                      .map(n -> String.format("%s: %s", n.getField(), n.getDefaultMessage()))
                      .reduce((x, y) -> String.format("%s; %s", x, y))
                      .orElse("參數輸入有誤");
              logger.error("MethodArgumentNotValidException異常,參數校驗異常:{}", msg);
              return TaxOutResponse.loadResponseMsg(msg);
          }
      
          /**
           * ConstraintViolationException-jsr規范中的驗證異常,嵌套檢驗問題
           * <p>ConstraintViolationException:作用于 @NotBlank @NotNull @NotEmpty 注解,校驗單個String、Integer、Collection等參數異常處理。</p>
           * <p>注:Controller類上必須添加@Validated注解,否則接口單個參數校驗無效</p>
           *
           * @param e ConstraintViolationException異常信息
           * @return 響應數據
           */
          @ResponseStatus(HttpStatus.BAD_REQUEST)
          @ExceptionHandler(value = ConstraintViolationException.class)
          public TaxOutResponse constraintViolationExceptionHandler(ConstraintViolationException e) {
              String msg = e.getConstraintViolations()
                      .stream()
                      .map(ConstraintViolation::getMessage)
                      .collect(Collectors.joining("; "));
      
              logger.error("ConstraintViolationException,參數校驗異常:{}", msg);
              return TaxOutResponse.loadResponseMsg(msg);
          }
      }

       

      posted @ 2023-05-15 10:20  jiajinhao  閱讀(608)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 麻豆国产97在线 | 欧美| 国产免费网站看v片元遮挡| 精品人妻少妇一区二区三区| 国产黄色精品一区二区三区| 99国产精品永久免费视频| 精品国产国语对白主播野战| 男女啪祼交视频| 成人精品一区二区三区四| 亚洲欧美偷国产日韩| 精品尤物TV福利院在线网站| 久久不见久久见免费影院www日本| 国产三级黄色片在线观看| 临西县| 一区二区亚洲精品国产精| 99RE8这里有精品热视频| 九色综合国产一区二区三区| 国产在线精品一区二区三区| 日本熟妇乱一区二区三区| 仙游县| 99亚洲男女激情在线观看| 国产自产av一区二区三区性色| 粉嫩一区二区三区国产精品| 伦伦影院午夜理论片| 国产乱国产乱老熟300部视频| 国产精品一区久久人人爽| 不卡一区二区国产精品| 成人国产亚洲精品一区二区| 国产在线精品一区二区三区| 国产av午夜精品福利| 亚洲成色在线综合网站| 欧美一本大道香蕉综合视频| 亚洲综合网国产精品一区| 福利一区二区不卡国产| 国产永久免费高清在线| 国产精品无码dvd在线观看| 国产玖玖视频| 国产日韩一区二区四季| 国产精品国产高清国产av| 精品国产污污免费网站入口 | 亚洲av日韩av永久无码电影| 动漫av纯肉无码av在线播放|